我需要帮助。我有一个简单的程序,但它在编译时无限循环。
这是代码。
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);
}
感谢您的帮助。
答案 0 :(得分:1)
您尚未为line
分配任何内存。使用char line[1024]
。您还应该检查NULL而不是EOF。
答案 1 :(得分:1)
您发布的代码中存在许多错误,但您在问题标题中引用的编译错误原因如下:
您的程序正在解析出现在文件“levels.dat”中的Sokoban级别,如下所示:
chicago;addie;story begins here;-----#####-----------|-----#@$.#-----------|-----#####-----------
您不小心将此文件作为C源代码文件添加到项目中,并且编译器抱怨第一个#,这是无法解析为C的点。
从项目中删除此文件,此错误将消失。然后,您可以修复编译器将在C代码中突出显示的其他错误。