有关换行和fgets()的查询

代码1: –

int main() { char str[200]; fgets(str,200,stdin); printf("%s",str); return 0; } 

输出: –

 ab cd ab cd (line feed) 

代码2: –

 int main() { char str[200]; gets(str); printf("%s",str); return 0; } 

输出: –

 ab cd ab cd 

当我输入ab(space)cd(enter key) ,然后在fgets()情况下,我在输出中获得line feed ,而在gets()情况下,没有显示新换行符。
在这种情况下line feed的问题是什么。

gets()fgets()读取FILE到提供的缓冲区,直到检测到换行。 前者存储NUL 而不是新线,后者将NUL置于新线之后。

请注意, gets()不安全的 ,因为它没有提供任何方法来保护写入超出传递的缓冲区的限制。

fgets()获取缓冲区的大小,如果达到此大小则停止读取。 在后一种情况下,在读取任何新行之前,读取可能会停止。

有关在缓冲区末尾切断各种新行的一般方法,您可能需要查看以下答案: https : //stackoverflow.com/a/16000784/694576