所以我使用fgets读了一行
line = fgets(l, BUFSIZ, stdin);
我从我的理解中控制+ d是EOF所以我试过
if(line[0] == EOF)
continue;
回到循环的顶部。但这导致了段错误......还有另一种方式吗?
答案 0 :(得分:5)
由于机器在 Ctrl + D 上生成EOF
,您应该fgets()
检查NULL
,因为fgets()
有义务返回NULL
在文件末尾。
line = fgets(l, BUFFSIZ, stdin)
if (line == NULL)
continue;
在您的代码中,您试图取消引用导致段错误的NULL
指针。
答案 1 :(得分:0)
检查信息流中的feof()
,或进行额外阅读并检查NULL
中的line
。
当您尝试将line
与NULL
进行比较时,EOF
为{{1}},您就会收到段错误。