关于scanf输入的不解
在做较大程序时scanf总是出岔子,奶奶的,一说的到它我就来气,算了,先不骂它了... 可能是一开始我基础不牢固,不知道scanf这个缺德的家伙加了'\n'不删,把它留在输入缓冲区里
后来我用getchar()来清除缓冲区,但是既麻烦又不安全
刚刚它又来坑我了,所以今天一定要把它给挂了......
我检查竟然发现在scanf(" %c",&b);中因为在%c前加了一个空格前一个scanf("%c",&a);
中在输入缓冲区遗留下来的'\n'竟然不会被读入到scanf(" %c",&b);中去
我想问一下scanf(" %c",&b);与没加空格有什么具体的区别吗?
缓冲区中的数据在第一个地方没有被读入的话是不是就自动销毁了
也许文字表达的不太清楚,就拿这个例子吧:
int main(void) int main(void)
{ {
char a=0,b=0; char a=0,b=0;
scanf("%c",&a); scanf("%c",&a);
scanf("%c",&b); scanf("%c",&b);
printf("b==%c",b); printf("b==%c",b);
return 0; return 0;
} }
输出则完全不同,问题如上
int main(void)
{
char a=0;
int b=0;
scanf("%c",&a);
scanf("%d",&b);
printf("b==%d",b);
return 0;
}
还有个小问题,我发现改成%d也不会读入
不过'\n'对应的数字为10,%d中'\n'为什么不能被换做10呢?
请耐心解答,非常感谢