有关换行和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