所以我使用 fgets 读取了一行
line = fgets(l, BUFSIZ, stdin);
据我所知,control+d 是 EOF,所以我试过了
if(line[0] == EOF)
continue;
回到循环的顶部。但这导致了段错误...还有其他方法吗?
最佳答案
由于机器在 Ctrl + D 上生成 EOF
,您应该检查 fgets()
是否有 NULL
,因为 fgets()
必须在文件末尾返回 NULL
。
line = fgets(l, BUFFSIZ, stdin)
if (line == NULL)
continue;
在您的代码中,您试图取消引用一个导致段错误的 NULL
指针。
关于c - 你如何检测 C 中的 ctrl+D?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29191939/