Zum Inhalt springen

Warum Null als Rückgabewert von fopen für fz?


Woodstock

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...