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文件,但文件总是为空。
答案 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);
}