谁可以解释这个程序的输出?

时间:2011-03-20 01:17:51

标签: c

为什么后续程序同时产生两个输出消息,而不要求用户提供任何输入???

#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:

2 个答案:

答案 0 :(得分:5)

除非另有说明,否则一次读取终端输入; scanf按指定读取一个字符,然后保留您输入的换行符,以便在输入缓冲区中发送该行以进行下一次循环传递。考虑按行读取输入并使用sscanf()或类似来解析这些行。

答案 1 :(得分:0)

只需插入getchar();在你打电话给scanf之后。这将吃新线。建议使用scanf(“%c \ n”,&amp; input);看起来很健康,但我从来没有发现它运作良好;我想知道是否有人可以告诉我为什么?