写程序时,意外发现个很不容易察觉问题出在哪的问题的
scanf("%c",&ch); scanf("%c",&c); printf("ch:%c\n",ch); printf("c:%c\n",c);
如果输入是:a b
那么输出会是:ch:a
c:
问题出在哪?如果将代码改为:
scanf("%c",&ch); scanf("%c",&c); printf("ch:%c\n",ch); printf("c:%d\n",c);//输出类型由%c,换为%d
同样的输入,输出是:ch:a
c:32
为什么是32?!?!因为空格space的ASCII值是32
可见char型变量能接受包括空格、回车在内的各种字符,并且scanf()函数也能处理。
那么,如何处理呢?方法就是:
在两个scanf()函数之间加入fflush(stdin)函数,以清除输入缓存。
这是字符型变量一个很容易忽视的小问题,以后一定要注意。
时间: 2024-11-05 13:34:16