第一次:
#include <stdio.h>
//將輸入複製到輸出,將製表符替換爲\t,回退符替換爲\b,反斜槓替換爲\\,將其以可見的方式顯示出來
int main(void){
int c;
while((c=getchar())!=EOF){
if(c=='\t')
printf("\\t");
if(c=='\b')
printf("\\b");
if(c=='\\')
printf("\\\\");
else
putchar(c);
}
}
使用的getchar(),不能捕獲到鍵盤輸入Backspace:
getchar()是流緩衝,用戶按下回車鍵後,才從輸入流中一個字符一個字符的讀取,
getchar()時用 Backspace的時候 直接在緩衝區處理了,相當於是對緩衝區的處理字符,不能被緩衝區記錄;
getch()是每輸入一個字符都捕獲,getch函數的時候backspace不能處理getch的緩衝區
修改後:
#include <stdio.h>
#include<conio.h>
//將輸入複製到輸出,將製表符替換爲\t,回退符替換爲\b,反斜槓替換爲\\,將其以可見的方式顯示出來
int main(void){
int c;
while((c=getch())!=EOF){
if(c=='\t')
printf("\\t");
if(c=='\b')
printf("\\b");
if(c=='\\')
printf("\\\\");
else
putchar(c);
}
}
此時,'\b' 可以看到了,可是輸入EOF(Ctrl+z)後回車無法退出程序。
因爲Ctrl-Z 是文本流控制符。
這個控制符只有在流控制的時候纔有效。
注意:在C語言中,反斜槓用'\\'表示,如果想要輸出兩個反斜槓,必須把字符串"\\\\"傳遞給printf函數。
"\\"代表一個'\',"\\"代表第二個'\'
如果用"\\\"表示會報錯