2013-07-14 65 views
1

我正在使用Xcode版本3.1.3来编辑和编译C程序。当我尝试读取.dat数据文件时,虽然该程序在Linux计算机上正常工作,但它不起作用。在C中读取数据文件

我将数据文件放入项目的生成文件夹中。我不知道为什么它不起作用。 这是代码:

#define courseFile "course.dat" 

FILE * in; /*FILE pointer to do the stream IO*/ 
    in = fopen(courseFile, "r+"); 
+1

不是Xcode的问题。 -----您是否检查过生成的可执行文件和数据文件的* full *路径?值得写下后者,然后在代码中使用它。 G。 '/用户/ ME /文档/ data.dat'。 – 2013-07-14 18:10:17

+0

这可能是一个XCode问题,因为当您运行可执行文件时,当前目录是IDE的一个属性,而不是程序本身。如果二进制文件是一个特定的目录,并且数据文件位于同一个目录中,并且二进制文件是从命令行运行的,它就会找到该文件。如果IDE具有不同的当前目录,则二进制文件可能找不到该文件。而且,总的来说,文件名最好用程序参数表示,而不是程序中的硬连线名称。但是,这也会让IDE变得棘手 - 您能否方便地为程序指定参数? –

回答

1

我上堆栈溢出的临时变通的答案从dougpan。这就是他所说的。

这是一个很好的问题...我有一个临时的解决方法,回答... 我确实尊重您关于问题而不是您的代码的请求。 作为一个快速的临时答案,我现在唯一的答案就是现在修改您的代码,如果您只是随您的数据文件一起调试代码。我知道硬编码你的文件位置是一个不错的,但为了调试的目的,以下将让你在路上遇到这个颠簸。您可以尝试将目录位置与数据文件一起硬编码,以便您的代码可以找到它。例如,假设您的Mac上的用户目录是jerryletter,您可以将Data.txt文件复制到Users目录〜/ jerryletter。然后可以修改只有一行代码的如下所示:

strcpy(file_name,"/Users/jerryletter/Data.txt");

因此,它是一个Xcode IDE问题。看到我的理由和答案在这里:https://stackoverflow.com/a/24266915/3565426