我正在开发一个游戏程序,它要求我将2D数组保存到一个文件中,然后如果用户希望返回到该游戏,则可以将其加载并继续。但是我在将数组保存到txt文件时遇到了问题。对于加载函数,它不能加载任何东西。用户应该选择加载选项,它应该能够使用数组调用txt文件,然后允许他们继续玩游戏
这是我的保存功能
无效保存(char*filename)
{
FILE*fp=fopen(文件名为“wb”);
fwrite(&;size,sizeof(size),1,fp);
fwrite(板,尺寸(int),尺寸,fp);
如果(fp==NULL)
回来
fclose(fp);
}
这是我的加载函数
无效加载(char*filename)
{
FILE*fp=fopen(文件名为“rb”);
fread(&;size,sizeof(size),1,fp);
fread(板,尺寸(内部),尺寸,fp);
如果(fp==NULL)
回来
fclose(fp);
}
在代码的后面,我使用菜单调用这些函数。
任何帮助都将不胜感激
board不是2D数组,而是指向行的指针数组。你需要在上面循环,分别写和读每一行
由于加载的板的大小可能与内存中当前的板不同,因此加载时需要释放旧板并重新分配新板
无效保存(char*filename)
{
FILE*fp=fopen(文件名为“wb”);
如果(!fp){
perror(“无法打开保存文件”);
回来
}
fwrite(&;size,sizeof(size),1,fp);
对于(int i=0;i<;size;i++){
fwrite(板[i],尺寸(*板[i]),尺寸,fp);
}
fclose(fp);
}
无效加载(字符*文件名)
{
FILE*fp=fopen(文件名为“r”);
如果(!fp){
perror(“无法打开保存文件”);
回来
}
国际单项体育联合会(委员会){
对于(int i=0;i<;size;i++){
免费(董事会[i]);
}
免费(膳宿);
}
fread(&;size,sizeof(size),1,fp);
板=malloc(尺寸*尺寸(*板));
对于(int i=0;i<;size;i++){
板[i]=malloc(尺寸*尺寸(*板[i]);
fread(板[i],尺寸(*板[i]),尺寸,fp);
}
fclose(fp);
}