【发布时间】:2017-07-17 14:31:44
【问题描述】:
我正在尝试从 txt 文件加载游戏地图,但是当我尝试使用 fgetc() 函数从文件中读取时,Xcode 给出了这个错误“EXC_BAD_ACCESS”。
我尝试在另一个 IDE 中做同样的事情,它工作得非常好,但 Xcode 一直给我这个错误。我什至尝试过 fscanf(),但没有成功。
代码如下:
FILE* file = fopen("res/txt/map_level_1.txt", "r");
if (file == NULL) {
printf("Could not open the file!\n");
return;
}
char c = fgetc(file); // error EXC_BAD_ACCESS
printf("%c", c);
fclose(file);
帮我解决问题。
提前谢谢你。
【问题讨论】:
-
你没有正确处理
file == NULL的情况,你必须在错误中退出(即return),而不是代码路径导致 fgetc,给出一个段错误。 -
printf("%s", &c);-->printf("%c", c); -
但我仍然在 Xcode 中遇到错误,而在另一个 IDE 中它可以工作。
-
@KirillSaidov AFAICS 这一定超出了您在此处显示的范围...您可以尝试提供更多上下文(理想情况下是完整且最小的示例)
-
函数:
fgetc()返回int,而不是char,因此(至少)来自fgetc()的返回值需要转换为char。但是,除非启用编译器警告,否则编译器不会告诉您该问题。
标签: c file exc-bad-access fgetc