kur*_*.ye 3 c getchar console-input
当我在K&R上练习时,我发现了一个非常有趣的问题:
代码如下:
include <stdio.h>
main()
{
int c;
int bn;
bn=0;
while((c=getchar())!=EOF)
{
if(c==' ')
bn++;
}
printf("blanks counter:%d\n",bn);
}
Run Code Online (Sandbox Code Playgroud)
代码函数是统计空白的数量
我一次输入所有单词,没有使用退格键,就完成了.
$ ./a.out
I have a dream
blanks counter:3
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用退格键,输入过程中会发生什么?
我推测当按下空格键时,getchar()函数应该得到这个事件,然后执行bn ++,所以即使我后来按退格键删除这个空白空间,bn变量的值也不会改变.但实践的结果与我的推测不同,实践的程序如下:
第一步:输入第一个空格

第二步:使用退格键删除空白空间
第三步:完成剩余的字符输入

为什么结果是3而不是4?为什么bn变量的值会被按下退格键改变?
请给我一些想法,谢谢!