https://www.52fb.cn里面的空格輸入?
C語言中回車,換行,空字符與空格:fgets和gets在讀取換行符的區別
摘要:C語言中,我們常常從終端輸入,并且輸出到終端,鍵盤上的回車,輸入到緩沖區以后,變成了什么字符?是‘\0’還是‘\n’?回車與換行有什么區別?本文主要為你講解C語言中的換行、回車等控制字符,幫助區別它們的實質。
1.空格
它的ASCII碼為0x20,而不是0x00。其中,gets可以讀入空格字符。
2.回車(\r)
這里有一個很重要的區分點:回車符號和回車鍵。
回車(‘\r’)效果是輸出回到本行行首,結果可能會將這一行之前的輸出覆蓋掉。例如執行:
puts("helloworld!\rxxx");
在終端輸出的是:
xxxloworld!
如果將上面的字符串寫入文件中,例如執行:
char*s="helloworld!\rxxx";
FILE*str=fopen("t.txt","r");
fwrite(s,16,1,str);
用文本編輯器打開t.txt。顯示的效果將由打開的編輯器所決定。
vi的效果為
windows記事本效果為
可以看到,vi將\t用^M代替,而記事本就沒有顯示該字符。
3.回車鍵
關于“回車鍵”的來歷,還得從機械英文打字機說起。在機械英文打字機上,有一個部件叫“字車”,每打一個單詞,“字車”就前進一格。當打滿一行字符后,打字者就得推動“字車”到起始位置,這時打字機會有兩個動作響應:一是“字車”被歸位,二是滾筒上卷一行,以便開始輸入下一行,這個推動“字車”的動作叫“回車”。后來,在電動英文打字機上,人們增加了一個直接起“回車”作用的鍵。這個新增的鍵就被稱為“回車鍵”。
回車的ASCII代碼
16進制是“0x0d”
10進制是“13”
在某些語言中可以用"\r"表示。
不同的操作系統對回車的處理是不同的:
在Unix/Linux系統中,換行用"\n"一個字符表示,
而在Windows系統中,則用"\n\r"兩個字符表示。
4.換行(\n)10
如果要實現換行的效果,在終端我們只需要使用'\n'即可;如果要想在win系統下的文本中實現換行的效果,需要使用‘\n\r’兩個控制字符
5.C語言對于字符串的處理
首先,回車鍵按下以后,鍵盤緩沖區中存放的是字符\n,如果我們用getchar,那么我們讀入的是字符“\n”;如果我們使用gets進行讀取,那么“\n”將被作為表示的結束的控制字符讀取。然后,gets會自動把這個\n轉換成'\0'存儲在字符串中。
另外,如果從終端讀取一個字符串,gets會把最后的換行符\n換成\0,而fgets從stdin讀入的時候,不會對\n進行處理。