【发布时间】:2014-04-12 02:54:03
【问题描述】:
问题是我试图读取一些整数以了解我已经通过的游戏关卡,然后如果 t 还没有,我想将当前关卡的整数设置为 1。它创建文件但不写任何东西。有谁知道为什么?? - 第一次使用 printf 创建它时会这样做,但在读取它时会出现状态访问冲突
void SaveGame(void)
{
FILE *pFile = fopen("SavedData.txt","rb");
int MyArray[8] = {0};
if(pFile)
{
fscanf(pFile, "%d %d %d %d %d %d %d %d" , MyArray[0], MyArray[1], MyArray[2], MyArray[3], MyArray[4], MyArray[5], MyArray[6], MyArray[7]);
fclose(pFile);
}
if(MyArray[Current] == 0)
MyArray[Current] = 1;
pFile = fopen("SavedData.txt", "wb");
if(pFile)
{
fprintf(pFile, "%d %d %d %d %d %d %d %d" , MyArray[0], MyArray[1], MyArray[2], MyArray[3], MyArray[4], MyArray[5], MyArray[6], MyArray[7]);
fclose(pFile);
}
}
【问题讨论】:
-
你应该检查第一个
fclose(pFile);返回值。 -
MyArray[0]在scanf参数中应该是&MyArray[0]或MyArray+0。其他所有索引也是如此。 -
您是否要求所有警告?使用
-Wall -Wextra。然后正确处理所有警告。许多编译器实际上可以检查各种格式字符串。