將輸入複製到輸出,將製表符替換爲\t,回退符替換爲\b,反斜槓替換爲\\

第一次: 

#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函數。

"\\"代表一個'\',"\\"代表第二個'\'

如果用"\\\"表示會報錯

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章