我正在尝试打印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++;
}
}
答案 0 :(得分:2)
变量t不会被编译器自动初始化为0。所以你需要用0初始化t。如果printf没有立即打印,则意味着数据被缓冲。如果你想看到immediatley,你可以考虑在printf之后立即冲洗stdout。
答案 1 :(得分:1)
我多次看到这个,并且不知道根本原因,但有效的解决方案是:
scanf(“\ n%c”,&amp; ch);
它可能与缓冲的行尾字符有关。