[英]Assigning a user-entered char to a variable
我遇到一些问题,无法成功将用户输入的char
存储到变量中,然后需要在程序的其他部分中使用该变量。
有问题的程序应该执行以下操作:
我将在这里以代码片段的形式向您展示该程序的第二部分,因为第一部分(将值放入数组中)可以正常工作:
char input, confirm;
printf("Would you like to view the array? Y/N: ");
while ((input = getchar()) != EOF){
confirm = putchar(input);
if (confirm == 'Y'){
printf("[");
for (i = 0; i < maxvals; i++){
if (i != maxvals - 1){
printf("%d,", A[i]);
}
else{
printf("%d", A[i]);
}
}
printf("]");
}
printf("\n");
所有变量显然都是预先声明的。 第2行和第3行是我现在遇到的问题。
当我尝试运行该程序时,我得到:
$ arrays.exe
Enter as many as 10 values, ^D to end
1 2 3
^D
3 values read into array
Would you like to view the array? Y/N: ♦
Y
Y
请注意该程序只是重复用户输入的内容。 我也尝试了这个(代替while循环):
confirm = getchar();
但这只是终止程序。 我也担心我的if (confirm == "Y")
行不起作用,但是根据我以前的编程经验,我认为应该行吗?
我很确定我已经给出了所有必要的代码,但是如果您想要整个程序,请告诉我,以便我进行编辑。
编辑:
没有人提到scanf。 它解决了问题。 这是工作代码,以备将来参考:
while (scanf("%c", &confirm) == 1){
if (confirm == 'Y'){
printf("[");
for (i = 0; i < n; i++){
if (i != n - 1){
printf("%d,", A[i]);
}
else{
printf("%d", A[i]);
}
}
printf("]");
break;
}
}
return 0;
您说它不起作用,但您没有说不起作用的症状是什么。 这可能会有所帮助。 无论如何,我认为有两件事可能是问题:
putchar(input)
没有做任何有用的事情。 putchar
不会将值写入变量(您尝试分配以confirm
),而是将其写入程序的标准输出(完全不是同一件事)。 我认为您根本不想使用putchar
。 confirm
是一个char
,则要与'Y'
(一个字符)而不是"Y"
(一个字符串)进行比较。 查看confirm
如何声明可能会有所帮助。 这是您要尝试执行的简化示例。 除非您正在从文件中读取输入(除了cntrl + c或退出按钮,如果您正在使用控制台应用程序),否则eof字符为'\\ 0',因此无法停止此循环。 必须将字符与单引号中的字母进行比较。 另外,如先前的海报所述,putchar并没有达到您的预期。 这是有关该功能的文档: http : //www.cplusplus.com/reference/cstdio/putchar/
int main()
{
char input, confirm;
printf("Would you like to view the array? Y/N: ");
while ((input = getchar()) != EOF){
if (input == 'Y'){
printf("!");
}
}
return 0;
}
here is your code, cleaned up some
and not using a 'input' variable
and not using a call to putchar()
and 'confirm' properly declared as an int
// this assumes that A[] and maxvals and i are already defined and set
int confirm;
printf("Would you like to view the array? Y/N: ");
while ((confirm = getchar() && !( 'Y' == confirm || 'N' == confirm ) && EOF != confirm )
{
if( EOF == confirm ) exit(1);
else printf( "invalid input: please enter: 'Y' or 'N'");
} // end while
// when get here, confirm contains 'Y' or 'N'
if ( 'Y' == confirm )
{
printf("[");
for (i = 0; i < maxvals; i++)
{
if (i != maxvals - 1)
{
printf("%d,", A[i]);
}
else
{
printf("%d", A[i]);
} // end if
} // end for
printf("]");
} // end if
printf("\n");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.