我有一些问题成功地将用户输入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;
答案 0 :(得分:1)
你说它没有用,但是你不能说出不工作的症状是什么。这可能有所帮助。无论如何,我认为有两件事可能是问题:
putchar(input)
没有做任何有用的事情。 putchar
不会将值写入变量(您尝试分配给confirm
),它会写入程序的标准输出(并非完全相同)。我根本不认为你想使用putchar
。confirm
是char
,您希望与'Y'
进行比较,"Y"
是一个字符,而不是confirm
,这是一个字符串。查看{{1}}的声明方式可能会有所帮助。答案 1 :(得分:0)
这是您尝试做的简化示例。没有办法停止这个循环,因为eof字符是&#39; \ 0&#39;除非您正在读取文件中的输入(除了cntrl + c或退出按钮,如果您正在使用控制台应用程序)。必须将字符与单引号中的字母进行比较。另外,正如前面提到的海报所说,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;
}
答案 2 :(得分:-1)
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");