Woodstock Geschrieben 11. Oktober 2001 Geschrieben 11. Oktober 2001 Warum bekomme ich bei der Ausführung meines Programms für 'fz' Null als Rückgabewert? #include "Sabine(1).h" void main() { FILE *fz, *fy; char buffer2[1001]={NULL}, buffer3[1001]={NULL}; char Datei[100][100], Liste[2][150], Eingabe[50][101]; char Ausgelesenes[128]; int Gefunden; int j = 0, k = 0, c, i = 0; int scnt = 0, scnt2 = 0, pos = 0; cout << "Mit diesem Programm können Sie eine " "beliebige Datei auf einen Suchbegriff hin \nuntersuchen!" " Wollen Sie keine weitere Datei mehr durchsuchen\nbitte " "'---' eingeben!\n\n"; cout << "Bitte geben Sie die List-Datei mit Pfad an: "; cin >> Liste[scnt]; fy = fopen (Liste[scnt], "r"); if (fy == NULL) cout << "Feler - List-Datei nicht gefunden!\n"; else { do { fgets (buffer3, 1000, fy); _strlwr(buffer3); strcpy(Datei[scnt], buffer3); scnt++; } while ((fgets (buffer3, 1000, fy))!= 0); do { cout << "Bitte das " << scnt2+1 << ". gesuchte Wort eingeben: "; cin >> buffer2; _strlwr(buffer2); strcpy(Eingabe[scnt2], buffer2); scnt2++; } while (strcmp(buffer2, "---")); for (j = 0; j < scnt-1; j++) { Gefunden = 2; fz = fopen (Datei[j], "r"); if (fz == NULL) cout << "Fehler - Datei nicht gefunden!\n\n"; else { . . . } } } } Bine Zitieren
Hasi Geschrieben 11. Oktober 2001 Geschrieben 11. Oktober 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Woodstock: <STRONG>Warum bekomme ich bei der Ausführung meines Programms für 'fz' Null als Rückgabewert?</STRONG> Zitieren
Woodstock Geschrieben 11. Oktober 2001 Autor Geschrieben 11. Oktober 2001 Daran habe ich gedacht, ja, wenn ich aber die Adresse als String durch fegts einlesen lassen, brauche ich diese nicht. Die Datei ist genau an der Stelle die ich in der Liste-Datei angegeben habe. Hmm, komisch komisch! Mal schaun... Bine Zitieren
Woodstock Geschrieben 11. Oktober 2001 Autor Geschrieben 11. Oktober 2001 Es muss an meinem Quelltext liegen, denn wenn ich die List-Datei dahin kürze das nur noch ein eintrag in Ihr ist, dann kann er die Datei öffnen, nur warum? Also bisher sieht es so aus: #include "Sabine(1).h" void main() { FILE *fz, *fy; char buffer2[1001]={NULL}, buffer3[1001]={NULL}; char Datei[100][1000], Liste[2][150], Eingabe[50][101]; char Ausgelesenes[128]; int Gefunden; int j = 0, k = 0, c, a, b, i = 0; int scnt = 0, scnt2 = 0, pos = 0; cout << "Mit diesem Programm können Sie eine " "beliebige Datei auf einen Suchbegriff hin \nuntersuchen!" " Wollen Sie keine weitere Datei mehr durchsuchen\nbitte " "'---' eingeben!\n\n"; cout << "Bitte geben Sie die List-Datei mit Pfad an: "; cin >> Liste[scnt]; fy = fopen (Liste[scnt], "r"); if (fy == NULL) cout << "Feler - List-Datei nicht gefunden!\n"; else { do { fgets (buffer3, 1000, fy); _strlwr(buffer3); strcpy(Datei[scnt], buffer3); scnt++; } while ((fgets (buffer3, 1000, fy))!= 0); for (j=0;j<scnt;j++) { Gefunden = 2; fz = fopen (Datei[j], "r"); if (fz==NULL) cout << "Fehler - Datei nicht gefunden!\n"; else { /* Hier findet die Überprügung statt */ } // else } // for } // else } // main Gehe ich nicht richtig in der Annahme, dass er in der for Schleife zuerst die Datei 'Datei[0]' öffnet (sie ist auf jeden Fall da wo sie sein soll), dann überprüft, und danach dann das gleiche mit der Datei 'Datei[1]' tut usw.? Bine Zitieren
Crush Geschrieben 11. Oktober 2001 Geschrieben 11. Oktober 2001 Also erst mal ist der \\ nur notwendig, wenn man im Source den Pfadnamen reinschreibt. Check mal nach, wie Dein Array initialisiert ist. Man darf natürlich die Terminierung mit 0 nicht vergessen->kontrollieren, ob die auch da ist. Wird ein Eintrag überschrieben mit einem kürzeren Namen, so könnten die übriggebliebenen Buchstaben vom Vornamen den neuen File-Namen verfälschen. Auf jeden Fall hatte ich damit mal irgendwann das Problem und mußte selber die Terminierung setzen. Versuch mal vor dem fopen() einen Pointer auf den Eintrag zu machen und kontrolliere im Debugger, ob er auch wirklich dort hinzeigt, wo er hinzeigen soll. Vielleicht wird beim Dereferenzieren der Adresse irgendwas falsch gemacht. Oder gib halt einfach mal den aktuellen Datei-String aus. Zitieren
eax Geschrieben 14. Oktober 2001 Geschrieben 14. Oktober 2001 servus, ich hab dir hier mal nen quellcode zum öffnen einer datei geschrieben... vielleicht hilft dir das weiter... ist aber in c... //SCHLUSS #include <stdio.h> int main() { FILE *datei; char dateiname[256]; printf("hallo\ndatei:"); scanf("%s", &dateiname); printf("\n%s", dateiname); if(datei = fopen(dateiname, "r")) { printf("\n datei erfolgreich geoefnnet\n"); fclose(datei); } else printf("Fehler beim Oeffnen der Datei\n"); return 0; } //ENDE ciao eax ps: kannst mir mail icq.. sonstwas schicken, wenn du für c++ brauchst... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.