示例代碼是(註釋是什麼我想它做的第一循環):爲什麼backspace在C中撤消一個單獨的getchar()調用?
#include <stdio.h>
#define BACKSPACE 8
main()
{
int c;
while((c = getchar()) != EOF) //output: GODDAMN NOTHING cursor on: 'h'
{
//if the input is "house" before entering EOF
putchar(c); //output: 'h' cursor on: 'o'
getchar(); //output: 'h' cursor on: 'u'
printf("%c", BACKSPACE); //output: 'h' cursor on: 'o'
getchar(); //output: 'h' cursor on: 'u'
printf("%c", BACKSPACE); //output: 'h' cursor on: 'o'
getchar(); //output: 'h' cursor on: 'u'
printf("%c", BACKSPACE); //output: 'h' cursor on: 'o'
}
} //ACTUAL END OUTPUT: "h"
我知道在大多數程序定期退格的樣子: 的printf(「%C%C」,8,8) ; ..意味着backspace幾乎只是將光標移回而不刪除任何東西,就像getchar()如何將光標向前移動一樣。
我試圖理解爲什麼上面的示例代碼的輸出是不完全一樣的:
#include <stdio.h>
main()
{
int c;
while((c = getchar()) != EOF) //output: WE HAVE NOTHING cursor on: 'h'
{
//if the input is "house" before entering EOF
putchar(c); //output: 'h' cursor on: 'o'
}
} //ACTUAL END OUTPUT: "house"
編輯:跟進的問題!如何「反向」調用getchar()?
#include <stdio.h>
main()
{
int c;
char a;
while((c = getchar()) != EOF)
{
a = c;
putchar(c);
a = getchar();
??????????
}
}
什麼我不得不穿上「____」,所以,當我的getchar再次調用分配給C,它前面分配到c後得到的焦炭,而不是之後的字符。