gpt4 book ai didi

c - 为什么文件读取不输出任何内容?

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

在二进制文件 mydata.dat 中,我编写了一个字符串:“这是一个测试”。这就是文件的完整内容。我想读回该字符串,但没有看到任何输出。不过程序运行没有错误。知道我做错了什么吗?

FILE *f = fopen("mydata.dat", "rb");

char content[100];

while(fread(content, sizeof(content), 1, f) == 1){
printf("%s", content);
}
fclose(f);

最佳答案

首先,如果你想读取字符,你应该使用fgets()。假设您确实想使用 fread()

您必须了解 fread() 返回读取的项目数,因此在您的情况下它是 0。因为您要求 fread() 读取 100 字节的 1 个元素...如果您的文件少于 100 字节,这将始终返回 0。您已交换了元素的大小和元素的数量。

另外,如果您希望数组成为有效的 C 字符串,则必须在末尾放置一个 NULL 终止符字节。因为 fread() 不会为你做这件事。

示例:

#include <stdio.h>

int main(void) {
FILE *f = fopen("mydata.dat", "rb");

if (f == NULL) { // Error check
perror("fopen()");
return 1;
}

char content[100];
size_t ret;

// We loop on the file to read 99 bytes at each loop
// sizeof *content is the size of an element of content
while ((ret = fread(content, sizeof *content, sizeof content - 1, f)) > 0) {
content[ret] = '\0'; // We use ret to nul terminate our string
printf("%s", content);
fflush(stdout); // flush the standard output
}

fclose(f);
}

关于c - 为什么文件读取不输出任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44595757/

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