我正在尝试编写一个C程序,但出于某种原因,我不能使用多个scanf或getchar提示符。我希望它看起来像这样:
"Please enter the first number:"
[user enters number]
"Please enter the second number:"
[user enters number]
但目前,它会跳过第二个提示。我正在使用一个简单的
scanf(“%d”,第一个),
和
scanf(“%d”,秒)。
有人能告诉我我做错了吗?
答案 0 :(得分:1)
你应该在第一次scanf()之后使用fflush(stdin)清理缓冲区。或者你可以使用getchar()。
您可以在此处找到进一步说明:http://www.phanderson.com/C/scanf.html
答案 1 :(得分:0)
问题在于,当您在命令行输入第一个值时,实际上在stdin缓冲区中放入了2个字符,即所需的字符和LF字符。
通常认为你最好使用fgets(char * s,int n,FILE * stream),其中* stream是stdin,* s是char数组,n是要读取的最大字符数。这使您可以更好地控制读入的字节数,以防止溢出错误。在这种情况下它是2,因为它是你想要的字符加上LF字符。 C中的字符串以空值终止,因此您至少需要一个3字节的数组才能容纳一个字符。要访问所需的一个字符,只需从传递给fgets的数组的0索引中读取。
例如:
char buffer[3];
fgets(buffer,2,stdin);
charyouwant = buffer[0];