从文件C读取时的状态访问冲突

时间:2014-04-12 02:54:03

标签: c file file-io

问题在于我试图读取一些整数以了解我已经通过的游戏的级别,然后我想将当前级别的整数设置为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);
  }
}

1 个答案:

答案 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]);