C语言中使用scanf输入字符时,在输入完成后必须按回车,这就带来了隐患,举例如下:
char c1,c2;
scanf("%c",&c1);
scanf("%c",&c2);
printf("c1 is %c,c2 is %c",c1,c2);
运行该程序段,输入一个字符A
后按回车(或者按空格)
,会给变量c1
赋值A
,但回车字符(或者空格符)
仍然留在缓冲区中,接着执行输入语句scanf("%c",&c2)
时,回车字符(或者空格符)
被赋值给c2
,所以输出内容为:
A
c1 is A ,c2 is(注意此处有一个换行符)
(
或者为:
A B
c1 is A ,c2 is(注意此处有一个空格)
)
再举一例: