我需要帮助。我有一个简单的程序,但是,它在编译时无限循环。
下面是代码。
void load_levels(char *path) {
FILE* fp=FOPEN(path,"r");
char* line;
char* buffer;
LEVEL *level;
while(fgets(line,1024,fp)!= EOF) {
fgets(line,1024,fp);
printf("%s",line);
}
fclose(fp);
}
谢谢你的帮助。
您没有为line
分配任何内存。使用char line[1024]
。您还应该检查是否为NULL而不是EOF。
您发布的代码中有许多错误,但您在问题标题中引用的编译器错误的原因如下:
你的程序正在解析出现在文件"levels.dat"中的Sokoban关卡,如下所示:
chicago;addie;story begins here;-----#####-----------|-----#@$.#-----------|-----#####-----------
您不小心将此文件作为C源代码文件添加到项目中,并且编译器抱怨第一个#,这是它无法解析为C的点。
从项目中删除此文件,此错误将消失。然后,您可以修复编译器将在C代码中突出显示的其他错误。