在类里面,我制作了一个国际象棋游戏,我试图将当前的棋盘状态保存到一个 csv 文件中。
我正在使用以下代码:
mkdir("saves");
FILE *fp1 = fopen_s(&fp1, "saves/board.csv", "wb"); //create a file
if (fp1 == NULL)
{
printf("Error while opening the file.\n");
perror("Error: ");
return 0;
}
fwrite(board, sizeof(char), sizeof(board), fp1);
fclose(fp1);
但它在 fp1 == null 上出错。错误是打印出“文件存在”,它不会再继续了。它会创建文件(因此,如果我将 board.csv 更改为将创建该文件的其他内容),但不会向其中保存任何数据。我不明白为什么现有的文件会导致它出错,因为它肯定知道它只是为了写入而创建的?
板初始化为板[8][8][2]。
任何帮助都会很棒 :)
最佳答案
fopen_s
如果成功则返回 0。所以你的代码:
FILE *fp1 = fopen_s(&fp1, "saves/board.csv", "wb"); //create a file
if (fp1 == NULL) {
printf("Error while opening the file.\n");
是错误的,成功时它会将值 fp1
覆盖为零并打印出
Error while opening the file.
改为尝试
FILE *fp1 = NULL;
errno_t ret = fopen_s(&fp1, "saves/board.csv", "wb");
if (!ret) {
关于c - 将 3D 数组保存到文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50141181/