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變量的值會被按退格鍵改變?
請給我一些想法,謝謝!