你如何检测 C 中的 ctrl+D?
How do you detect ctrl+D in C?
所以我使用 fgets 读取了一行
line = fgets(l, BUFSIZ, stdin);
据我所知,control+d 是 EOF,所以我尝试了
if(line[0] == EOF)
continue;
返回循环顶部。但这导致了段错误...还有其他方法吗?
由于机器在 Ctrl + D 上生成 EOF
,您应该检查 fgets()
是否有 NULL
,因为 fgets()
有义务在文件末尾 return NULL
。
line = fgets(l, BUFFSIZ, stdin)
if (line == NULL)
continue;
在您的代码中,您试图取消引用 NULL
导致段错误的指针。
检查流中的 feof()
,或额外阅读并检查 line
中的 NULL
。
你遇到了段错误,因为当你试图将它与 EOF
进行比较时,line
是 NULL
。
所以我使用 fgets 读取了一行
line = fgets(l, BUFSIZ, stdin);
据我所知,control+d 是 EOF,所以我尝试了
if(line[0] == EOF)
continue;
返回循环顶部。但这导致了段错误...还有其他方法吗?
由于机器在 Ctrl + D 上生成 EOF
,您应该检查 fgets()
是否有 NULL
,因为 fgets()
有义务在文件末尾 return NULL
。
line = fgets(l, BUFFSIZ, stdin)
if (line == NULL)
continue;
在您的代码中,您试图取消引用 NULL
导致段错误的指针。
检查流中的 feof()
,或额外阅读并检查 line
中的 NULL
。
你遇到了段错误,因为当你试图将它与 EOF
进行比较时,line
是 NULL
。