gpt4 book ai didi

c - 如何一次一个字符地完整读取一个文件?

转载 作者:行者123 更新时间:2023-11-30 20:39:51 24 4
gpt4 key购买 nike

我正在尝试使用以下代码一次完整地读取一个文件:

void readfile (FILE *fp, char *buf)
{
char *c = buf;
while (fscanf(fp, "%c", c) == 1);
}

int main (int argc, const char *argv[])
{
char *contents = (char *)malloc(1000);

FILE *file = fopen(argv[1], "r");
readfile(file, contents);
fclose(file);

printf("%s", contents);
free(contents);

return 0;
}

当我使用适当的参数运行此命令时,我没有看到任何输出。我知道我正在成功读取文件,因为当我打印每个字符时我看到了文件的内容,如下所示:

void readfile (FILE *fp, char *buf)
{
char *c = buf;
while (fscanf(fp, "%c", c) == 1)
printf("%c", *c);
}

我似乎无法获取contents的值。

最佳答案

更改:

void readfile (FILE *fp, char *buf)
{
char *c = buf;
while (fscanf(fp, "%c", c) == 1);
}

进入:

void readfile (FILE *fp, char *buf)
{
char *c = buf;
while (fscanf(fp, "%c", c) == 1) ++c;
// ^^^
}

问答部分:

I know that I am reading the file successfully, because I see the contents of the file when I print each character [...]

您重复打印缓冲区同一位置中的字符。也就是说,您不会增加存储以下字符的指针。随后的每个 fscanf 调用都会覆盖 buf[0]

关于c - 如何一次一个字符地完整读取一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25711376/

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