gets()在到达'\ r'或'\ n'或'\ r \ n'时是否会停止读取?

时间:2017-05-24 18:09:42

标签: c

获取的documentation说:

  

从标准输入(stdin)读取字符并将它们存储为a   C字符串转换为str,直到换行符或文件结尾为止   达到。

但它没有说明换行符是什么。是否所有以下内容都被视为换行符:'\ r'或'\ n'或'\ r \ n'?

1 个答案:

答案 0 :(得分:1)

从C标准(5.2.2字符显示语义)

  

\ n(换行)将活动位置移动到初始位置   下一行。

和(7.21.2 Streams)

  

2文本流是一个有序的字符序列   行,每行由零个或多个字符加上a组成   终止换行符。最后一行是否需要   终止换行符是实现定义的。人物   可能必须在输入和输出上添加,更改或删除   符合在主机中表示文本的不同约定   环境。因此,不需要一对一的对应关系   流中的字符与外部字符之间   表示即可。从文本流中读取的数据必然是   比较等于先前写入该流的数据   仅在以下情况下:数据仅包含打印字符和控件   字符水平制表符和换行符;没有换行符   紧接着前面有空格字符;最后一个角色是   换行符。是否写出空格字符   在读入时出现换行符之前   实现定义的。

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

考虑到函数gets不安全,C标准不再支持。