gpt4 book ai didi

c - 从C中的文件中读取字符串

转载 作者:行者123 更新时间:2023-11-30 16:52:12 25 4
gpt4 key购买 nike

我有一个包含多个字符串的文件,每个字符串位于单独的行上。所有字符串的长度均为 32 个字符(因此末尾带有 '\n' 的字符长度为 33)。

我正在尝试读取所有字符串。现在,我只想读取它们,而不是按如下方式存储它们:

char line[32];
while (!feof(fp)) {
fgets(line, 32, fp);
}
printf("%s", line);

这会打印出零。为什么不起作用?

此外,我尝试在读取的每个字符串的末尾存储一个空终止符。我将 line 数组更改为长度 33,但是如果找到 '\n',则如何将其替换为 \0 并存储它?

最佳答案

您的代码无法正常工作,因为您只为 30 个字符的行加上换行符和空终止符分配空间,并且因为您只在 之后 feof() 打印一行。返回 true。

此外,feof()仅在您尝试读取文件末尾但失败后才返回 true。这意味着while (!feof(fp))通常是不正确的 - 您应该简单地阅读直到读取功能失败 - 此时您可以使用 feof()/ferror()区分文件结尾和其他类型的失败(如果需要)。因此,您的代码可能如下所示:

char line[34];

while (fgets(line, 34, fp) != NULL) {
printf("%s", line);
}

如果你想找到第一个'\n' line 中的角色,并将其替换为 '\0' ,您可以使用strchr()来自<string.h> :

char *p;

p = strchr(line, '\n');
if (p != NULL)
*p = '\0';

关于c - 从C中的文件中读取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41354674/

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