C語言中回車,換行,空字元與空格:fgets和gets在讀取換行符的區別
摘要:C語言中,我們常常從終端輸入,並且輸出到終端,鍵盤上的回車,輸入到緩衝區以後,變成了什麼字元?是‘\0’還是‘\n’?回車與換行有什麼區別?本文主要為你講解C語言中的換行、回車等控制字元,幫助區別它們的實質。
1.空格
它的ASCII碼為0x20,而不是0x00。其中,gets可以讀入空格字元。
2.回車(\r)
這裡有一個很重要的區分點:回車符號和Enter鍵。
回車(‘\r’)效果是輸出回到本行行首,結果可能會將這一行之前的輸出覆蓋掉。例如執行:
puts("hello world!\rxxx");
在終端輸出的是:
xxxlo world!
如果將上面的字串寫入檔案中,例如執行:
char *s = "hello world!\rxxx";
FILE *str = fopen("t.txt","r");
fwrite(s, 16, 1, str);
用文字編輯器開啟t.txt。顯示的效果將由開啟的編輯器所決定。
vi的效果為
windows記事本效果為
可以看到,vi將\t用^M代替,而記事本就沒有顯示該字元。
3.Enter鍵
關於“Enter鍵”的來歷,還得從機械英文打字機說起。在機械英文打字機上,有一個部件叫“字車”,每打一個單詞,“字車”就前進一格。當打滿一行字元後,打字者就得推動“字車”到起始位置,這時打字機會有兩個動作響應:一是“字車”被歸位,二是滾筒上卷一行,以便開始輸入下一行,這個推動“字車”的動作叫“回車”。後來,在電動英文打字機上,人們增加了一個直接起“回車”作用的鍵。這個新增的鍵就被稱為“Enter鍵”。
如果要實現換行的效果,在終端我們只需要使用'\n'即可;如果要想在win系統下的文字中實現換行的效果,需要使用‘\n\r’兩個控制字元
5.C語言對於字串的處理
首先,Enter鍵按下以後,鍵盤緩衝區中存放的是字元\n,如果我們用getchar,那麼我們讀入的是字元“\n”;如果我們使用gets進行讀取,那麼“\n”將被作為表示的結束的控制字元讀取。然後,gets會自動把這個\n轉換成'\0'儲存在字串中。
另外,如果從終端讀取一個字串,gets會把最後的換行符\n換成\0,而fgets從stdin讀入的時候,不會對\n進行處理。
相關文章
- Linux - 回車符和換行符及其在不同系統上的區別Linux
- 替換SQL欄位中的換行符,回車符,空格等特殊符號SQL符號
- c#換行符及空格符(轉義字元)C#字元
- js 去掉空格.回車.換行JS
- oracle 回車、換行符Oracle
- 換行與回車(\r \n)的起源以及在編制語言中的使用
- 關於在textarea中輸入回車換行和空格字元的正常顯示 (轉)字元
- 【換行符】Windows、Unix、Mac不同作業系統的回車符 和換行符 WindowsMac作業系統
- sqlserver資料庫 去除欄位中空格,換行符,回車符(使用replace語句)SQLServer資料庫
- 終於搞懂了回車與換行的區別
- 正規表示式.號元字元(除了回車符\r和換行符\n)字元
- DOS,UNIX中的回車換行區別
- 回車和換行
- js將文字框的內容回車換行符轉換為<br/>換行JS
- oracle中去掉文字中的換行符、回車符、製表符Oracle
- ultraedit中將某字元替換為回車符字元
- CHARINDEX、表中有製表符、換行符、回車符的查詢和取消掉的方法Index
- oracle中去掉文字中的換行符、回車符、製表符小結Oracle
- Java 檔案換行符識別與轉換Java
- SQL —— 時刻提防一些髒資料 [ 回車, 換行, 空格, Tab鍵形成的製表符 ]SQL
- oracle去掉資料裡的tab、回車、換行等特殊符號Oracle符號
- 菜鳥教程之工具使用(八)——EGit禁止自動轉換回車換行符Git
- Android 回車換行的持久化Android持久化
- python按行讀取檔案,如何去掉換行符"\n"Python
- js保留文字的空格和換行效果JS
- C語言中的*和&符號C語言符號
- 塊元素和行內元素的區別與轉換
- Windows & Unix 檔案格式之迷, 空格、回車換行、tab 轉換及其相關工具(轉載)Windows
- C語言中&&,||,&,| 的區別C語言
- 安卓資源字串中加全形空格、半形空格、換行、@%等特殊字元安卓字串字元
- C語言中的strlen與sizeof的區別C語言
- sqlserver查詢一張表所有欄位是否含製表符、換行符、回車符SQLServer
- HTML換行符和水平線HTML
- C語言中資料型別轉換函式C語言資料型別函式
- C語言中資料型別的自動型別轉換C語言資料型別
- C語言中const和#define的區別C語言
- Linux 轉換換行符Linux
- **PHP中替換換行符PHP