Ios 将fopen与xcode一起使用时为NULL

Ios 将fopen与xcode一起使用时为NULL,ios,fopen,Ios,Fopen,我正在尝试使用C为iPhone4inch应用程序从文件初始化多维数组,但无法使用fopen打开该文件。 每当我尝试此操作时,都会得到一个空值: 我不知道如何使用C打开文件 我已经试过了: 我使用getcwd打印出当前的工作目录,但是我得到的只是/并且当我将它附加到文件名时,我仍然得到空值 我了解到,如果您进入产品>方案>编辑方案选项,那么您可以更改当前工作目录,但我没有看到该选项 我还了解到,您可以使用绝对路径,如:/users/name/desktop/program 但我对iOS开发还不熟悉

我正在尝试使用C为iPhone4inch应用程序从文件初始化多维数组,但无法使用fopen打开该文件。 每当我尝试此操作时,都会得到一个空值:

我不知道如何使用C打开文件

我已经试过了:

我使用getcwd打印出当前的工作目录,但是我得到的只是/并且当我将它附加到文件名时,我仍然得到空值

我了解到,如果您进入产品>方案>编辑方案选项,那么您可以更改当前工作目录,但我没有看到该选项

我还了解到,您可以使用绝对路径,如:/users/name/desktop/program 但我对iOS开发还不熟悉,所以我不知道这是否是个好主意


那么如何让fopen工作呢?

您可以在iOS中指定绝对路径,但您的示例中的路径可能用于Mac OS,其布局稍有不同。正如您所说,您可以指定fopen的路径,但要找出该路径的第一部分究竟是什么,还有更多的工作要做

iOS将所有AppStore应用程序放入具有随机生成的沙盒目录名的文件夹中。它基本上是GUID的十六进制字符串。因此,您需要使用iOS框架中的方法来获取文件路径或URL的第一部分

如果文件是应用程序捆绑包的一部分,因此可以随应用程序一起提供,则需要使用NSBundle方法查找文件的路径


如果文件是在设备上启动应用程序后生成或下载的,则需要使用NSFileManager方法确定文件目录的路径。通常是文档目录。您可以在沙箱中构建自己选择的目录结构。

您是否尝试过将level1.rez作为文件名?/通常是根目录。耶,这是我第一次尝试让它工作。您在标题中编辑了xcode 5,但我认为这可能是一个xcode 5特定的问题,因为其他用户提到的建议不适用于我的项目设置。最好先添加C标记,然后再添加xcode。如果您可以使用另一个IDE使代码工作,但仍然不能在Xcode中工作,那么这将是一个Xcode问题。问题是,您提到编辑方案以更改工作目录,但您正在设备上运行应用程序。它被沙盒保存在自己的目录中。您是否将level1.rez捆绑为资源,即添加到项目中?我想是的。我并没有在其他地方创建这个文件,而是在xcode中创建的,如果这是您想要的。我去了new>file>other>empty并创建了level1.rezSo我应该放弃使用c打开文件而只使用objective c吗?我不知道你在说什么。@rezen\uuuu没有理由避免像fopen这样的C函数。您只需要通过使用适当的Objective-C方法获得的正确路径。
FILE  *f;
f=fopen("/level1.rez", "r");

if (f == NULL)
{
    printf("Error Reading File\n");
    //exit (0);
}