【问题标题】:fscanf not reading in a file in Xcode in Cfscanf没有在C中的Xcode中读取文件
【发布时间】:2013-03-02 16:25:22
【问题描述】:

我试图让我的 xcode 读入一个文件,但我不断得到“构建成功”,然后 (11db) 作为输出。

我已将一个名为“sudokode.in”的文件保存到我的桌面,这就是我要打开的文件。

文件中只有一个整数 19

我只想将 19 打印到屏幕上。

我以前从未让我的 Xcode 读取文件,所以我不知道是否必须设置它,或者什么。我在网上搜索并没有找到真正解决这个问题的方法。

感谢您的帮助。

int main() {

int num;

FILE* ifp = fopen("sudokode.in", "r");
fscanf(ifp, "%d", &num);

printf("%d", num);

return 0;
}

【问题讨论】:

  • 在尝试使用之前,您应该检查ifp 是否为NULL
  • 查看fopen的结果。我认为您的程序找不到该文件,因为它是从不同的目录运行的。
  • 可执行文件不只是从桌面上随机拉出一个文件,它会在启动可执行文件的目录中搜索(在本例中,是由 Xcode 创建的临时目录) .
  • 好吧,理查德,我就是这么想的。我不认为我的老师在这方面做过。在他的示例中,他只是保存到桌面,它对他有用。不过,他使用了不同的编译器。所以,问题是:如何更改这个临时目录?
  • @user2044189:改用/Users/John/Desktop/sudoke.in等绝对路径。这样可以省去每次 Xcode 编译代码时将可执行文件复制到桌面的麻烦。

标签: c xcode file scanf


【解决方案1】:

该文件可能不存在。如果是这种情况,ifp 将是 NULL,因此请检查:

int main() {

int num;

FILE* ifp = fopen("sudokode.in", "r");
if (ifp == NULL) {
    printf("Oops, this file doesn't exist!\n");
    return -1;
}
fscanf(ifp, "%d", &num);

printf("%d", num);

return 0;
}

您的程序仅在您从存储sudoke.in 的同一目录中运行时才有效。您可以改用绝对路径(例如/User/John/Desktop/sudoke.in)。

【讨论】:

    【解决方案2】:

    要设置您的工作目录以在 Xcode 中读取和写入文件,请转到产品 --> 方案 --> 编辑方案,然后单击它。

    然后,单击“工作目录”旁边的复选框,并使用下面字段末尾的灰色小文件图标来设置工作目录。

    我在这里找到了一个很好的解释,说明如何在 Xcode 上使用 c 语言进行基本命令行项目:

    https://www.meandmark.com/blog/2013/12/setting-the-current-working-directory-for-xcode-command-line-projects/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-25
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多