gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 23:25:23 24 4
gpt4 key购买 nike

我有一个包含多个字符串的文件,每个字符串单独一行。所有字符串的长度都是 32 个字符(所以 33 个字符的末尾是 '\n')。

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

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

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

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

最佳答案

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

此外,feof() 仅在您尝试读取文件末尾但失败后返回真。这意味着 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/8128996/

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