保存数组导致c

时间:2018-02-22 01:51:03

标签: c

void loadFile(int array[ROW][COL]){
    FILE *gradesBin;

    gradesBin = fopen("grades.dat", "rb");
    if (gradesBin == NULL){
        printf("No file found.\n");
        fclose(gradesBin);
        return;
    }
    else {
        fread(*array, sizeof(int[ROW][COL]), 1, gradesBin);
    }

    fclose(gradesBin);
    return;
}

void saveFile(int *array, int i){
    FILE *gradesBin;

    gradesBin = fopen("grades.dat", "wb+");
    if (gradesBin = NULL){
        printf("File Error\n");
        fclose(gradesBin);
        exit(1);
    }
    //stores the data into the data file
    fwrite(*array, sizeof(int[ROW][COL]), 1, gradesBin);
    fclose(gradesBin);
}

这是我遇到问题的代码。在数组的开头调用loadFile函数,最后调用saveFile。 数组在main中初始化,以填充NULL值,当我结束程序时,如果一个文件不存在,它将创建一个新的grades.dat文件,但文件总是为空。

1 个答案:

答案 0 :(得分:0)

在此纠正主要问题:

if (gradesBin = NULL){}应为if (gradesBin == NULL){}

第一个代码将gradesBin设置为NULL,然后检查它是否成功,它是否始终运行该部分。

fread(*array, sizeof(int[ROW][COL]), 1, gradesBin);应为fread(array, sizeof(int[ROW][COL]), 1, gradesBin);

fwrite(*array, sizeof(int[ROW][COL]), 1, gradesBin);应为fwrite(array, sizeof(int[ROW][COL]), 1, gradesBin);

无需在此处取消引用。

void loadFile(int array[ROW][COL]){
    FILE *gradesBin;

    gradesBin = fopen("grades.dat", "rb");
    if (gradesBin == NULL){
        printf("No file found.\n");
        fclose(gradesBin);
        return;
    } else {
        fread(array, sizeof(int[ROW][COL]), 1, gradesBin);
    }

    fclose(gradesBin);
    return;
}

void saveFile(int *array, int i){
    FILE *gradesBin;

    gradesBin = fopen("grades.dat", "wb+");
    if (gradesBin == NULL){
        printf("File Error\n");
        fclose(gradesBin);
        exit(1);
    }
    fwrite(array, sizeof(int[ROW][COL]), 1, gradesBin);
    fclose(gradesBin);
}