我写了这个测试程序来获取 scanf() 函数的返回值。
但是在测试中,如果我输入一个整数,程序是正常的,但是当我输入一个字符串时,程序就会陷入死循环。谁能解释一下这是为什么?
还有就是转义字符\0代表ascii码0?当我打印“\12”时,我会换行,但是当我打印“\9”时,我无法得到“TAB”(TAB 的 ascii 码是 9)。
#include <stdio.h>
int main(void){
int x;
int temp;
//printf("\13");
for(;;){
temp=scanf("%d",&x);
printf("%i",temp);
}
}
最佳答案
当输入与格式说明符不匹配时,scanf() 不会丢弃导致无限循环的输入。
for(;;){
temp=scanf("%d",&x);
if(temp == 0) { // Input failure
perror("invalid input");
break;
}
printf("%i",temp);
}
如果在输入无效后仍想继续循环,则说明您已读取输入并自行刷新。
关于c - 关于 C 中 scanf() 的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14636022/