c - 带有 EOF 的 bool 表达式不起作用

标签 c eclipse eof

我尝试编写一段代码,让用户输入无限量(仅受内存限制)的字符串,其中每个字符串最多可以有 298 个字符长(298 个字符的数组,带有一个 '\n' 和 '\最后为 0')。 结束信号应为 EOF(Win 上为 Strg+Z,Linux 上为 Stg+D)。当我将 EOF 更改为“a”或任何其他字符但不使用 EOF 时,下面的代码工作得很好。我很想调试它,但不幸的是我无法将 EOF 放入 Eclipse 的终端中。 那么有谁知道为什么 EOF (应该是 -1)和 char 之间存在差异,或者如何在 eclipse 中放入 EOF ?

while(boolean == 0)
{
fgets(buff_memory, 300, stdin);

for (i = 0; i < 300; i++)
{
  if (buff_memory[i] == EOF)
   {
    all_memory[current_max - 1] = '\0';
    boolean = 1;
    break;
   }
  else if (buff_memory[i] == '\0')
  {
    break;
  }
  else
  {
    all_memory[current_max - 1] = buff_memory[i];
    buff_memory[i] = '\0';
    current_max++;
    all_memory = (char *)realloc(all_memory, current_max * sizeof(*all_memory));
  }
}

最佳答案

feof 永远不会将 EOF 放入其输出中。 EOF 是一个 int 值 -1,不能用 char 数组表示。 EOF 仅由 getc 和类似函数返回。

在文件末尾,fgets 将在到达文件末尾时返回 NULL,并且您需要检查 feof 以验证是否已达到 EOF .

关于c - 带有 EOF 的 bool 表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26938481/

相关文章:

java - 如何在安卓模拟器中使用电脑摄像头

java - 从 eclipse 内部启动 Tomcat mongrel 插件时出现 fatal error

java - Eclipse 中运行的 Tomcat 实例的 "work"目录在哪里?

用 C 编写的程序可以获取/打印编译时间吗?

C:为什么fgets函数不起作用?

windows - 从Windows导入到Hive,ParseException行1:0无法识别 'into'附近的输入 '<EOF>'

python - Python 中标准输入的多个参数

c - 用 C 编写我自己的 Cat 函数

C - 打印阵列工作不正常

c - 我应该设置errno吗?