2016-05-29 11 views
0

Ich kann nicht Kopf oder Schwanz von diesem machen - Ich habe eine Datei input1.txt in meinem Arbeitsverzeichnis, aber ich kann nicht fopen() es.fopen() gibt NULL, Datei existiert im aktuellen Verzeichnis

Meine Verzeichnisstruktur (Xcode):

main():

const char* fileName = "input1.txt"; 
if (argc > 1) 
{ 
    fileName = argv[1]; 
} 
printf("Opening file: %s\n", fileName); 

clock_t timer = clock(); 

HashMap* map = hashMapNew(10); 

// --- Concordance code begins here --- 
// Be sure to free the word after you are done with it here. 
FILE *in; 
if ((in = fopen(fileName, "r")) == NULL) { 
    printf ("Can’t open %s for reading. %s\n", fileName, strerror(errno)); 
} 
char* w = nextWord(in); 
printf("%s",w); 

Nextword():

char* nextWord(FILE* file) 
{ 
    int maxLength = 16; 
    int length = 0; 
    char* word = malloc(sizeof(char) * maxLength); 
    while (1) 
    { 
     char c = fgetc(file); 
     if ((c >= '0' && c <= '9') || 
      (c >= 'A' && c <= 'Z') || 
      (c >= 'a' && c <= 'z') || 
      c == '\'') 
     { 
      if (length + 1 >= maxLength) 
      { 
       maxLength *= 2; 
       word = realloc(word, maxLength); 
      } 
      word[length] = c; 
      length++; 
     } 
     else if (length > 0 || c == EOF) 
     { 
      break; 
     } 
    } 
    if (length == 0) 
    { 
     free(word); 
     return NULL; 
    } 
    word[length] = '\0'; 
    return word; 
} 

ich den Fehler:

Can’t open input1.txt for reading. No such file or directory

Warum funktioniert das nicht? Die Datei ist auf jeden Fall dort ...

+3

Das "aktuelle" Verzeichnis in einer IDE ist möglicherweise nicht immer das, was Sie denken, dass es ist. Überprüfen Sie die Projekteinstellungen, um zu sehen, auf was das "aktuelle" Verzeichnis eingestellt ist. Bitte bearbeiten Sie Ihre Frage, um uns mitzuteilen, welche IDE Sie verwenden. Sie können es natürlich immer innerhalb des Programms ausdrucken, um zu sehen, was es ist. –

+0

Eine Sache, die Sie reparieren müssen, Sie überprüfen, ob der 'fopen()' Aufruf erfolgreich war und das ist toll, aber Sie gehen auf Anywat versuchen, daraus zu lesen, sieht das nicht falsch für Sie? –

+0

den vollständigen Pfad Geben und versuchen, die Datei oder tut System (PWD) Öffnen das Arbeitsverzeichnis zu erhalten. – SilentMonk

Antwort

0

in Xcode Projekt „Ordner“ sind besser als „Gruppen“, den tatsächlichen Ordner auf der Platte beziehen oder nicht. Die Gruppe Verzeichnishierarchie wird in den Projekteinstellungen gespeichert und nicht notwendigerweise zu Ihrer Dateisystem-Hierarchie (Think Symlinks) entspricht. Versuchen Sie einen Rechtsklick auf eine der Dateien in Frage, und wählen Sie „Show in Finder“ seine wahre Position auf der Festplatte zu sehen.

Wenn sich die Datei input1.txt nicht im selben Verzeichnis wie die aufrufende Funktionsdatei befindet, verschieben Sie sie durch den Finder und fügen Sie sie über Xcode (Datei-> "Dateien hinzufügen zu") zum Projekt hinzu. .. ").

Edit: Ich habe gerade ein Werkzeug, um Ihre Gruppe und Dateistrukturen zu synchronisieren. Take a look at synx

Verwandte Themen