【问题标题】:Xcode: EXC_BAD_ACCESS when using fgetc() in CXcode:在 C 中使用 fgetc() 时出现 EXC_BAD_ACCESS
【发布时间】: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


【解决方案1】:

尝试将您的工作目录指定到您的文件位置。

在菜单栏上,选择Product -> Scheme -> Edit Scheme,然后选择Run -> Options。在Working Directory 下,启用Custom Working Directory 并选择您的文件位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 2016-01-19
    相关资源
    最近更新 更多