我试图在xcode中读取文本文件但是这个 “当我尝试构建程序时出现了EXC_BAD_ACCESS消息
这是我的代码 我把inputA.txt文件放在与项目文件相同的文件夹中 我的朋友告诉我,我应该将txt文件放在调试文件夹中这就是为什么我无法读取txt 这个代码中的文件?请帮帮我......
macbook用户。
int main (int argc, const char * argv[]) {
FILE* fp;
char mychar;
char arr[50][2] = {0, };
int i = 0;
int j, k;
graphType* G_;
G_ = (graphType*)malloc(sizeof(graphType));
Create(G_);
fp = fopen("inputA.txt", "r");
//fp = fopen("inputB.txt", "r");
//fp = fopen("inputC.txt", "r");
while(1){
for(j = 0 ; j < 2 ; j++){
mychar = fgetc(fp);
if(mychar == EOF)
break;
else if(mychar == ' ')
continue;
arr[i][j] = mychar;
}
i++;
}
答案 0 :(得分:2)
默认情况下,您的二进制文件将在ProjectDir/build/Mode
生成,Mode
为Debug
或Release
,并将其作为工作目录。如果要引用项目目录中的文件,则必须使用../../input.txt
。
构建位置在目标或项目构建选项卡的“构建位置”部分中配置。如果需要,可以在可执行文件的设置中手动更改工作目录(“常规”,“将工作目录设置为:”)。
如果您有疑问,那么您随时可以找到工作目录:
#include <unistd.h>
int main() {
char buf[2048];
getcwd(buf, sizeof(buf));
printf("%s", buf);
}
答案 1 :(得分:0)
很可能inputA.txt
与二进制文件不在同一个文件中。您应该确保将文本文件复制到项目的输出目录中(无论是手动还是手动)。
此外,如果无法打开文件,fopen
将返回NULL
,因此您可能需要为此添加检查。
if (fp == NULL)
{
printf("Could not open file!");
return 1;
}
答案 2 :(得分:0)
fopen可能返回null,因为您的文本文件不在正确的位置。别忘了检查空!