читать текстовый файл в xcode - PullRequest
3 голосов
/ 23 мая 2010

я пытался прочитать текстовый файл в 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 ]

2 голосов
/ 23 мая 2010

По умолчанию ваш двоичный файл будет сгенерирован в ProjectDir/build/Mode, с Mode равным Debug или Release, и будет иметь его в качестве рабочего каталога. Если вы хотите сослаться на файл в каталоге проекта, вам придется использовать ../../input.txt в этом случае.

Места сборки настраиваются в разделе «Места сборки» на вкладке сборки целей или проектов. Рабочий каталог можно изменить вручную в настройках исполняемого файла ( «Общие» , ». При необходимости установите для рабочего каталога:« ).

Если у вас есть сомнения, вы всегда можете узнать, что это за рабочий каталог:

#include <unistd.h>
int main() {
    char buf[2048];
    getcwd(buf, sizeof(buf));
    printf("%s", buf);
}
0 голосов
/ 23 мая 2010

fopen, вероятно, возвращает ноль, потому что ваш текстовый файл не в нужном месте. Не забудьте проверить нулевое значение!

0 голосов
/ 23 мая 2010

Скорее всего inputA.txt находится не в том же файле, что и двоичный файл. Убедитесь, что текстовый файл скопирован в выходной каталог вашего проекта (вручную или вручную).

Также, fopen вернет NULL, если файл не может быть открыт, поэтому вы можете добавить проверку для этого.

if (fp == NULL)
{
    printf("Could not open file!");
    return 1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...