fscanf issue with reading in key-value pairs
编辑:自从被问到,我使用的是 Visual Studio 2013 Ultimate,它没有发出任何警告。
我对 C 有点陌生,文件 i/o 对我来说一直是个问题。我将如何以"keyName:valueName"的形式解析键值对?我的问题开始发挥作用,因为我的值可能是字符串、浮点数或无符号整数。
我正在使用 SDL2 编写游戏,并且尝试将各个演员的尽可能多的配置保存在单独的 .actor 文件中。按照一些示例代码,我设法通过 fscanf 读取了该对的关键部分,但是当我尝试将值 fscanf 到我的演员时,我得到了一个异常。
播放器.actor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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 |
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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; } } } |
when I attempt to fscanf the value in to my actor I get an exception.
1
——约翰尼·莫普