Zum Inhalt springen

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


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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.

Geschrieben

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

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