c - EOF 在 Mac Xcode (C) 中不起作用?

标签 c

我目前正在运行此字符计数 .c,但除非我按下控制 D,否则不会达到 EOF,这非常烦人。

#include <stdio.h>
main () {

   long nc;

   nc = 0;

   while (getchar() != EOF) {
       ++nc;
   }

   printf("%ld\n", nc);

}

最佳答案

您看到的是预期的行为。

当输入流结束时遇到EOF。你在做什么(我想)是按回车键。这并不表示 EOF,因为您可以在输入后输入更多内容。 Ctr+D 表示文件结束。

您可以做的是寻找 End Of Line。 而且您还需要查找 EOF,因为用户可以通过按 Ctr+D 来终止 (正如@DavidC.Rankin 所建议的那样)

这可以通过将 getchar() 与 '\n' 和 EOF 匹配来完成

int c
while ((c = getchar()) != '\n' && c != EOF) {
    ++nc;
}

希望这对您有所帮助。

关于c - EOF 在 Mac Xcode (C) 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44582022/

相关文章:

c - 在循环中使用 malloc 如何进行内存分配 >

c - 静态变量的地址相同,但局部变量的地址不同

c - 在汇编中实现返回最大数和最小数之差的 C 函数

c++ - 如何将简单指针转换为固定大小的多维数组?

c - C字符串存放在哪个数据段?

连接的udp多播需要在发送方绑定(bind)

c - 在 C 语言中,在二进制文件的开头添加 3 个字节的简短方法是什么?

c - 线程、事件循环和大量的连接和并发

c - 如何在 printf 中打印 float 的实数

c - 使用 memfd_create 和 fexecve 从内存运行 ELF