2017-05-24 94 views
1

documentation用於獲取表示:get()在達到' r'或' n'或' r n'時停止讀取嗎?

讀取來自標準輸入(stdin),並將它們存儲作爲 C字符串到STR字符,直到一個新行字符或結束文件 達到。

但它沒有說明什麼換行符是。以下所有內容都被視爲換行符:'\ r'或'\ n'或'\ r \ n'?

+1

請參閱:[\ r \ n,\ r,\ n它們之間有什麼區別?](https://stackoverflow.com/q/15433188/4389800)。 – usr

+1

'gets'已過時,請不要使用它。 'fgets'只有一對EOL標記中的一個成爲輸入字符串(Windows)的一部分。 –

+0

當它碰到換行符或覆蓋重要的和段錯誤時停止,這就是爲什麼每個C引用都說不使用gets。 – stark

回答

1

從C標準(5.2.2字符顯示語義)

\ n(換行符)移動活躍位置到 下一行的初始位置。

和(7.21.2流)

2所述的文本流是由成 線,每條線由零個或多個字符加上 字符的有序序列終止新行字符。最後一行是否需要 終止換行字符是實現定義的。在輸入和輸出到 時可能必須添加,更改或刪除字符 ,以符合在主機 環境中表示文本的不同約定。因此,不需要在流中的字符和外部的,4610,表示之間的一對一對應 。只有在以下情況下,才能從文本流中讀入數據: 比較等於先前寫入該流 的數據:數據僅由打印字符和控制字符水平製表符和換行符組成;沒有換行字符 緊接在空格字符前面;最後一個字符是 換行符。在讀入新行字符前出現的空格字符 是否爲實現定義的 。

因此,新行字符是字符'\n'

考慮到功能gets是不安全的,C標準不再支持該功能。

相關問題