3 Stimmen

Lesen Sie die Textdatei in Xcode.

Ich habe versucht, eine Textdatei in Xcode zu lesen, aber diese "EXC_BAD_ACCESS"-Nachricht ist aufgetreten, als ich versucht habe, mein Programm zu erstellen.

Hier ist mein Code und ich habe die Datei inputA.txt im selben Ordner wie die Projektdatei platziert. Mein Freund hat mir gesagt, dass ich die txt-Datei in den Debug-Ordner legen sollte. Ist das der Grund, warum ich die txt-Datei in diesem Code nicht lesen kann? Bitte helfen Sie mir...

MacBook-Nutzer.

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++;
    }

2voto

Georg Fritzsche Punkte 95256

Standardmäßig wird Ihre Binärdatei in ProjectDir/build/Mode generiert, wobei Mode Debug oder Release ist und dies als Arbeitsverzeichnis verwendet wird. Wenn Sie auf eine Datei im Projektverzeichnis verweisen möchten, müssen Sie in diesem Fall ../../input.txt verwenden.

Die Build-Standorte sind im Abschnitt "Build-Locations" im Build-Tab von Zielen oder Projekten konfiguriert. Das Arbeitsverzeichnis kann in den Einstellungen für die ausführbare Datei manuell geändert werden ("Allgemein", "Arbeitsverzeichnis festlegen auf:"), falls erforderlich.

Wenn Sie Zweifel haben, können Sie immer herausfinden, was das Arbeitsverzeichnis ist:

#include 
int main() {
    char buf[2048];
    getcwd(buf, sizeof(buf));
    printf("%s", buf);
}

0voto

Mark Rushakoff Punkte 236626

Sehr wahrscheinlich ist inputA.txt nicht im gleichen Verzeichnis wie die Binärdatei. Stellen Sie sicher, dass die Textdatei in das Ausgabeverzeichnis Ihres Projekts kopiert wird (ob manuell oder per Hand).

Außerdem wird fopen NULL zurückgeben, wenn die Datei nicht geöffnet werden konnte, daher sollten Sie eine Überprüfung hinzufügen.

if (fp == NULL)
{
    printf("Konnte Datei nicht öffnen!");
    return 1;
}

0voto

Ken Aspeslagh Punkte 11374

Fopen gibt wahrscheinlich null zurück, weil Ihre Textdatei nicht am richtigen Ort liegt. Vergessen Sie nicht, auf null zu überprüfen!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X