C语言 fwrite fread 函数怎么使用? 始读取不到数据 也可能我根本没写进去

发布网友 发布时间:2022-04-26 23:35

我来回答

1个回答

热心网友 时间:2023-11-12 08:05

C语言里的fwrite,是带写缓冲的。
你往文件里写数据后,数据并不是马上就写到文件里。主要在下面三种情况下会写到文件里:
(1)缓冲区满了
(2)使用了fflush函数
(3)使用了fclose函数
所以你的错误就在于,在saveToDisk函数的最后,没有把文件关闭。
另外,对文件操作结束,把文件关闭掉本身就是个好习惯。
void saveToDisk(char path[32]) {
FILE *fp;
if ((fp = fopen(path, "wb")) == NULL ) { //wb write binary 写二进制文件
printf("%s", "can nnot find file");
return;
}
int i = 0;
for (i = 0; i < 1; i++) {
if (fwrite(&stus[i], sizeof(struct Stu), 1, fp) != 1)
{
printf("%s", "write error");
}
}
fclose(fp);

}

void checkFile(char path[32]) {//读取数据的时候 想把读到的数据放在stud数组中

FILE *fp;
if ((fp = fopen(path, "rb")) == NULL ) {
printf("%s", "wrong!!");
}
int i = 0;
for (i = 0; i < 1; i++) {
fread(&stud[i], sizeof(struct Stu), 1, fp);
printf("%s,%d,%d,%s\n", stud[i].stuname, stud[i].no, stud[i].age);
}
fclose(fp);

}

热心网友 时间:2023-11-12 08:05

C语言里的fwrite,是带写缓冲的。
你往文件里写数据后,数据并不是马上就写到文件里。主要在下面三种情况下会写到文件里:
(1)缓冲区满了
(2)使用了fflush函数
(3)使用了fclose函数
所以你的错误就在于,在saveToDisk函数的最后,没有把文件关闭。
另外,对文件操作结束,把文件关闭掉本身就是个好习惯。
void saveToDisk(char path[32]) {
FILE *fp;
if ((fp = fopen(path, "wb")) == NULL ) { //wb write binary 写二进制文件
printf("%s", "can nnot find file");
return;
}
int i = 0;
for (i = 0; i < 1; i++) {
if (fwrite(&stus[i], sizeof(struct Stu), 1, fp) != 1)
{
printf("%s", "write error");
}
}
fclose(fp);

}

void checkFile(char path[32]) {//读取数据的时候 想把读到的数据放在stud数组中

FILE *fp;
if ((fp = fopen(path, "rb")) == NULL ) {
printf("%s", "wrong!!");
}
int i = 0;
for (i = 0; i < 1; i++) {
fread(&stud[i], sizeof(struct Stu), 1, fp);
printf("%s,%d,%d,%s\n", stud[i].stuname, stud[i].no, stud[i].age);
}
fclose(fp);

}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com