我有一个打开.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无法打开!" 我需要做些什么来使这项工作?
答案 0 :(得分:22)
确保input.txt文件不在项目文件夹中,但与编译的程序位于同一文件夹中。您可以通过右键选择产品'产品'在Xcode的左侧窗格中选择"在查找器中显示"然后将.txt文件移动到那里,然后再次运行。
答案 1 :(得分:1)
我今天遇到了同样的问题。我想将C代码添加到我的Swift项目中,我的文件指针始终为NULL。
不幸的是,在iOS应用的XCode 9中,我无法更改工作目录。改变构建阶段对我也没有帮助。经过4个多小时的反复试验,这就是我最终想出来的结果并且有效:
我创建了一个新的objective-c文件(.m)并在那里复制了我所有的C代码。
我留下了未经处理的.h文件(XCode生成的桥接头和我自己的.h文件,带有公共函数声明)。现在我的项目结构如下所示:
在我的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");
现在它没有任何问题!真是太棒了!
ps我决定写下这个答案,以防它会帮助像我这样的人并节省一些时间。如果您知道如何更改XCode 9 for iOS中的工作目录,请给我留言 - 现在我真的很好奇为什么我找不到它。