gpt4 book ai didi

c - 使用fread从C中的文件中读取

转载 作者:太空宇宙 更新时间:2023-11-04 06:17:26 25 4
gpt4 key购买 nike

我正在学习如何使用 C 语言从文件中读取内容。我设法抓取了以下代码。

#include <stdio.h>
#include <stdlib.h>


void read_content(FILE *file) {
char *x = malloc(20);
// read first 20 char
int read = fread(x,sizeof(char),20,file);
if (read != 20) {
printf("Read could not happen\n");
}
else {
printf("the content read is %s",x);
}
free(x);
return;
}

int main(int argc,char *argv[]) {

FILE *fp;
fp = fopen("test.txt","w+");
read_content(fp);
fclose(fp);
return 0;
}

但出于某种原因(我无法理解)我看到 read 字节计数为 0

最佳答案

问题是您使用 w+ 模式打开文件。有两种可能:

  • 如果文件不存在,它将被创建为空。从中读取会立即给出文件结尾,导致 fread() 返回 0。
  • 如果文件确实存在,它将被截断,即变成一个空文件。从中读取会立即给出文件结尾,导致 fread() 返回 0。

如果您只想从文件中读取(按照您的示例),请以 r 模式打开它。如果您想在不破坏其现有内容的情况下进行读写,请使用模式 r+

无论您选择何种模式,请始终检查 fopen() 是否返回非 null 并在返回 null 时打印错误(这不是问题的原因,但这是最佳实践)。

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

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