在xcode中读取文本文件

时间:2010-05-23 13:38:08

标签: c macos

我试图在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++;
    }

3 个答案:

答案 0 :(得分:2)

默认情况下,您的二进制文件将在ProjectDir/build/Mode生成,ModeDebugRelease,并将其作为工作目录。如果要引用项目目录中的文件,则必须使用../../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,因为您的文本文件不在正确的位置。别忘了检查空!