编辑:自从被问到以来,我正在使用Visual Studio 2013 Ultimate,它没有发出任何警告。
我对 C 有点陌生,文件 I/O 对我来说一直是一个问题。我将如何以"keyName: valueName"的形式解析键值对?我的问题开始发挥作用,因为我的值可能是字符串、浮点数或无符号 int。
我正在使用 SDL2 编写游戏,并尝试将尽可能多的单个 actor 配置保留在单独的 .actor 文件中。按照一些示例代码,我设法通过 fscanf 读取了该对的关键部分,但是当我尝试将值 fscanf 添加到我的 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;
}
}
}
当我尝试将值 fscanf 到我的演员时,我得到一个异常。
fscanf(file, "%i", i); // this doesn't?
fscanf(file, "%i", &i);
您需要传递地址。 – 约翰尼·莫普