我的C程序读取文本文件。当我把它放入Xcode时它失败了。发生了什么?

时间:2014-09-16 20:14:10

标签: c xcode fopen

我有一个打开.txt的函数,使用fscanf读取格式为的数字:

532
2
-234
32

等。当我使用GCC编译时它成功地执行了此操作,但是我无法在Xcode中打开文件,为什么? 相关代码是:

int main (void){
    FILE *infile = NULL;  //input file buffer
    int int_array[100];   //an integer array 100 entries long
    char infilename[256];  //an extra large char array 
        //this entire while loop was provided as part of the assignment, 
        //we weren't supposed to change it. I've finished this assignment, 
        //but now I want to know how to use my Xcode debugger
    while(infile == NULL) {
        printf("Input filename:");     //user prompt
        scanf("%s",infilename);        //store user input in large char array
        if((infile = fopen(infilename, "r")) == NULL) {      //input file buffer opens file
            printf("ERROR: file %s can not be opened!\n",in filename); //error if can not open
        }
    }
    int arraySize =0;

    while (!feof(readfile)) {           //StackOverflow showed me how to use this function.
        fscanf(readfile, "%d", (array+arraySize));
        arraySize++;
    }
    //more code...
}

在我的Xcode项目中,我有hw1.c,hw1_functions.c,input.txt和一些未调用的c函数都在同一个文件夹中。当我运行程序时,它会提示我输入文件的名称。我说input.txt就像我在使用GCC后在终端中所做的那样,但是我得到了" ERROR文件input.txt无法打开!" 我需要做些什么来使这项工作?

2 个答案:

答案 0 :(得分:22)

确保input.txt文件不在项目文件夹中,但与编译的程序位于同一文件夹中。您可以通过右键选择产品'产品'在Xcode的左侧窗格中选择"在查找器中显示"然后将.txt文件移动到那里,然后再次运行。

example image

答案 1 :(得分:1)

我今天遇到了同样的问题。我想将C代码添加到我的Swift项目中,我的文件指针始终为NULL。

不幸的是,在iOS应用的XCode 9中,我无法更改工作目录。改变构建阶段对我也没有帮助。经过4个多小时的反复试验,这就是我最终想出来的结果并且有效:

  1. 将文件复制到XCode时,我选择了“创建组”,但我需要选择“创建文件夹引用”:
  2. enter image description here

    1. 我创建了一个新的objective-c文件(.m)并在那里复制了我所有的C代码。

    2. 我留下了未经处理的.h文件(XCode生成的桥接头和我自己的.h文件,带有公共函数声明)。现在我的项目结构如下所示:

    3. enter image description here

      1. 在我的dict.m文件中代替以前的普通c fopen部分:

        FILE *dic = fopen("dictionary.txt", "r");
        

        我添加了obj-C代码:

        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"dictionary" ofType:@"txt"];
        FILE *dic = fopen([filePath cStringUsingEncoding: NSUTF8StringEncoding], "r");
        
      2. 现在它没有任何问题!真是太棒了!

        ps我决定写下这个答案,以防它会帮助像我这样的人并节省一些时间。如果您知道如何更改XCode 9 for iOS中的工作目录,请给我留言 - 现在我真的很好奇为什么我找不到它。