gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:27:33 27 4
gpt4 key购买 nike

我尝试编写一段代码,让用户输入无限量(仅受内存限制)的字符串,其中每个字符串最多可以有 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com