c - 将 3D 数组保存到文件的问题

标签 c

在类里面,我制作了一个国际象棋游戏,我试图将当前的棋盘状态保存到一个 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/

相关文章:

c++ - 可变函数 - 如何确保参数正确传递

c++ - Eclipse C++ : "Program "g+ +"not found in PATH"

c - 编写一个基本的半金字塔模式程序

c - 使用 for 循环的微 Controller p18f4520 的音频

c - 用C读写二进制文件?

信用程序无法编译

c - 使用数组作为指向字符串的指针来确定 int、double 的数据类型

php - 如何使用 dbg 在用户定义的 PHP 函数上设置断点?

复制二进制文件

c - 合并两个未排序的链表?