【发布时间】:2023-03-19 20:53:01
【问题描述】:
我只是在学习与FILEs 合作。我的问题是这样的:
当我想读取由fopen("example.dat", "ab") 打开的二进制文件时,它会显示如下内容:
但是当我通过fopen("example.dat", "wb") 打开文件时,它可以工作!
这是我的测试程序:
写入文件:
#include <stdio.h>
void main() {
int i = 0;
FILE *save = fopen("save.dat", "wb");
char str[5][40];
while (i < 5) {
gets(str[i]);
fwrite(str[i], sizeof(char), 40, save);
i++;
}
}
阅读:
#include <stdio.h>
void main() {
char str2[100][400];
int i = 0;
FILE *load = fopen("save.dat", "rb");
if (!load) {
printf("cant open file!");
return;
}
fread(str2[i], sizeof(char), 40, load);
while (!feof(load)) {
puts(str2[i]);
printf("\n");
i++;
fread(str2[i], sizeof(char), 40, load);
}
}
我需要"ab",因为它是关于保存游戏信息的,它不应该在关闭程序后删除或再次运行。
【问题讨论】:
-
使用可以显示二进制内容的编辑器。
-
@user3121023 我试过删除文件上最后保存的数据
-
heeyyyy 为什么反对票!!!我只是一个可怜的工程师学生
-
如果我将第一个程序更改为使用
"ab"而不是"wb",第二个程序仍然可以正确读取它。究竟是什么问题?您应该发布有问题的代码,而不是工作代码。 -
我不明白为什么这行不通——它不是最好的设计,但至少应该可以。