fscanf проблема с чтением в парах ключ-значение - PullRequest
0 голосов
/ 12 февраля 2019

РЕДАКТИРОВАТЬ: С тех пор, как меня спросили, я использую Visual Studio 2013 Ultimate, и он не выдал никаких предупреждений.

Я немного новичок в C, и файловый ввод-вывод всегда был проблемой длямне.Как бы я пошел о разборе пар ключ-значение в виде "keyName: valueName"?Моя проблема вступает в игру, потому что моими значениями могут быть строка, число с плавающей запятой или беззнаковое целое.

Я пишу игру с использованием SDL2 и стараюсь сохранить как можно больше конфигурации для отдельных актеров в отдельных файлах .actor.Следуя некоторому примеру кода, мне удалось прочитать ключевую часть пары с помощью fscanf, однако, когда я пытаюсь fscanf значение в моем актере, я получаю исключение.

Player.actor

folder: images/Player/
scale: 1.0,1.0
color: 255,255,255,255
colorSpecial: 10,255,100,255
xOffset: 1
numAnimations: 3

name: idle
filename: playerIdle.png
length: 8
frameWidth: 39
frameHeight: 87
frameRate: 0.75
type: loop

name: attack
filename: playerPunch.png
length: 8
frameWidth: 50
frameHeight: 82
frameRate: 0.75
type: once

name: walk
filename: playerWalk.png
length: 7
frameWidth: 50
frameHeight: 82
frameRate: 0.85
type: loop

Код:

void LoadActor(Actor *actor, char *filename)
{
  FILE * file;
  char buf[512];
  char* imageFile = "";
  int i = 0;

  file = fopen(filename, "r");

  if (!file)
  {
    return NULL;
  }

  rewind(file); 

  while (fscanf(file, "%s", buf) != EOF) //this works
  {
    if (strcmp(buf, "numAnimations:") == 0) // this works
    {
        fscanf(file, "%i", i); // this doesn't?

        continue;
    }
  } 
}

1 Ответ

0 голосов
/ 13 февраля 2019

, когда я пытаюсь найти значение для моего актера, я получаю исключение.

       fscanf(file, "%i", i); // this doesn't?

fscanf(file, "%i", &i); Вам необходимо передать адрес.- Джонни Мопп

...