问题在于我试图读取一些整数以了解我已经通过的游戏的级别,然后我想将当前级别的整数设置为1,如果t还没有。它创建文件但不写任何东西。谁知道为什么? - 它是第一次使用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);
}
}
答案 0 :(得分:0)
MyArray
的所有元素都已初始化为0
。
使用,
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]);
你本质上是在呼唤,
fscanf(pFile, "%d %d %d %d %d %d %d %d" , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
将该行更改为:
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]);