为什么后续程序同时产生两个输出消息,而不要求用户提供任何输入???
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char input;
do {
printf("Enter a single character: \n");
scanf("%c", &input);
printf("The ordinal value is %d. \n",input);
} while(input != '#');
return 0;
}
输出如下:
Enter a single character:
s
The ordinal value is 115.
Enter a single character:
The ordinal value is 10.
Enter a single character:
答案 0 :(得分:5)
除非另有说明,否则一次读取终端输入; scanf
按指定读取一个字符,然后保留您输入的换行符,以便在输入缓冲区中发送该行以进行下一次循环传递。考虑按行读取输入并使用sscanf()
或类似来解析这些行。
答案 1 :(得分:0)
只需插入getchar();在你打电话给scanf之后。这将吃新线。建议使用scanf(“%c \ n”,&amp; input);看起来很健康,但我从来没有发现它运作良好;我想知道是否有人可以告诉我为什么?