c - 你如何检测 C 中的 ctrl+D?

标签 c segmentation-fault stdin eof fgets

所以我使用 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/

相关文章:

iphone - NSCharacter Set 使用 int,但我需要未分配的短字符?

c - 使用 setfsuid() 创建文件时出现段错误?

python - 在 os.dup2() 之后重定向标准输出/输入/错误

python - Python:从stdin读取和写入Powershell中的二进制文件

c - 在 char 指针数组中分配时接收段错误

C. 使用的内存比 malloc 中分配的内存多——我可以返回某事,结束程序而不是让它崩溃吗?

c - 了解有关 c 中退出函数的一行

c - QT 计时器(开始/暂停)

有人可以改进我的堆数据结构代码吗?

c - 为什么在写入使用字符串文字初始化的 "char *s"而不是 "char s[]"时出现段错误?