C无价值打印一个字符

时间:2010-11-29 20:41:54

标签: c input char printf scanf

我正在尝试打印3个字符型字符的ASCII值。当我输入第一个char时,它不会打印char的值。在第一个char之后,它开始给出值。

#include <stdio.h>
int main()  {
    char ch;
    int t;
    while(t < 3){
        scanf("%c\n", &ch);
        printf("%c - %d\n", ch,ch);
        t++;
    }
}

http://i54.tinypic.com/2mdqb7d.png

2 个答案:

答案 0 :(得分:2)

变量t不会被编译器自动初始化为0。所以你需要用0初始化t。如果printf没有立即打印,则意味着数据被缓冲。如果你想看到immediatley,你可以考虑在printf之后立即冲洗stdout。

答案 1 :(得分:1)

我多次看到这个,并且不知道根本原因,但有效的解决方案是:

scanf(“\ n%c”,&amp; ch);

它可能与缓冲的行尾字符有关。