【发布时间】:2018-01-05 18:55:29
【问题描述】:
所以我试图将一堆数据保存在一个文本文件中以便稍后加载。 该函数将数据正确打印到文本文件,但是当我停止执行并再次启动它以查看它是否加载时,文本文件中没有数据。 它发生在我停止程序后。
这里是使用的函数:
void saveGame(t_game game, int width, int height){
FILE * file= fopen("save.txt", "w+");
int i = 0;
int j = 0;
fprintf(file,"%d%d", game.origbomb, game.wincount);
for(i=0;i<width;i++){
for(j=0;j<height;j++){
fprintf(file,"%c",game.map[i][j]);
}
}
for(i=0;i<width;i++){
for(j=0;j<height;j++){
fprintf(file,"%c",game.bombmap[i][j]);
}
}
fclose(file);}
【问题讨论】:
-
调试 101:一次测试一件事。如果你的读没有看到你的写,你不知道哪一个坏了。做你的写,然后用其他东西查看文件,比如文本编辑器或只是 cat。如果文件看起来不错,那么就是读取损坏了,
-
fscanf(file,"%d%d", &game.origbomb, &game.wincount);这是一种有趣的格式。扫描如何区分 3 x 12 和 31 x 2 地图?在文件中两者看起来不会像312吗? -
这个功能看起来不错。它写了它应该写的东西,但它不“保存”。因此,当执行停止时,文件变为空。编辑:我保存的数字永远不会超过 9
-
那不是在写,是吗?继续调试:打印出文件名。这是你所期望的吗? fprintf 调用的返回值是多少? ...
-
如果这看起来像你正在做的那样,你可能实际上想要“r+”,而不是“a+”。
标签: c file-handling