3
当我做日K & [R实践中,我发现了一个很有趣的问题:有关的getchar()函数的有趣做法
代码如下:
include <stdio.h>
main()
{
int c;
int bn;
bn=0;
while((c=getchar())!=EOF)
{
if(c==' ')
bn++;
}
printf("blanks counter:%d\n",bn);
}
码功能是统计空格的个数
我一次输入所有单词,没有使用退格键,它是完成。
$ ./a.out
I have a dream
blanks counter:3
但是,如果我用退格键,发生什么事可能在输入过程?
我推测当一个空格键被按下时,getchar()函数应该得到这个事件,然后执行bn ++,所以即使我稍后按退格键删除这个空格,bn变量的值也不会改变。 但实践的结果是我的猜测不同,实践PROGRAME如下:
第一步:输入第一blankspace
第二步:使用退格键删除thie blankspace 的第三步:完成剩余的字符输入
为什么结果是3而不是4?为什么bn变量的值会被按退格键改变?
请给我一些想法,谢谢!