funktion fclose
Verstehe nicht das bei der Ausführung des Programms immer ein "read error speicheradresse ? verwaist auf speicheradresse ?" kommt als Popup!
Die "test.txt" - Datei wird schon angelegt ,wenn sie nicht existiert. Doch wird bei der Funktion "fclose" ein Fehler von Windows ausgegeben in einem Popup wie gesagt!
Ich möchte die Datei schließen damit ich sie dann aufrufen kann: Bsp.: system("test.txt");
Aber wo ist der Fehler?
#include <stdio.h>
int system();
int fclose(fp);
int exit();
int main()
{
FILE *fp;
fp = fopen("test.txt", "a+");
if(fp = NULL)
printf("kann datei nicht eröffnen.\n");
else
fclose(fp);
system("test.txt");
return 0;
}
Ich möchte die Datei schließen damit ich sie dann aufrufen kann: Bsp.: system("test.txt");
Aber wo ist der Fehler?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 66248
Url: https://administrator.de/contentid/66248
Ausgedruckt am: 24.11.2024 um 06:11 Uhr
4 Kommentare
Neuester Kommentar
Moin laubyte1,
ich denke nicht, dass die fclose()-Function in diesem Fall dafür verantwortlich ist.
Das if-else-Konstrukt wird wie geschrieben abgearbeitet, aber nicht wie gedacht.
Ich streu mal ein paar geschweifte Klammern ein.
Und das Filehandle, der Integer-Returnwert von fopen() kann nienicht NULL sein.
Wenn fopen in die Grütze geht, dann wird FALSE zurückgegeben. Zumindest war es die letzten 40 Jahre so..
Gruß
Biber
ich denke nicht, dass die fclose()-Function in diesem Fall dafür verantwortlich ist.
Das if-else-Konstrukt wird wie geschrieben abgearbeitet, aber nicht wie gedacht.
Ich streu mal ein paar geschweifte Klammern ein.
Und das Filehandle, der Integer-Returnwert von fopen() kann nienicht NULL sein.
Wenn fopen in die Grütze geht, dann wird FALSE zurückgegeben. Zumindest war es die letzten 40 Jahre so..
#include <stdio.h>
int system();
int fclose(fp);
int exit();
int main()
{
FILE *fp;
fp = fopen("test.txt", "a+");
if(!fp) {
printf("kann datei nicht eröffnen.\n");
} else {
fclose(fp);
system("test.txt");
}
return 0;
}
Gruß
Biber
Moin lowbyte,
jepp, Dein C-Buch scheint recht zu haben, wie eine nicht-repräsentative Suchmaschinenbefragung zeigt.
Mehrheitlich wird dort geschrieben, dass es entweder einen Pointer auf eine FILE-Struktur zurückgibt oder eben einen NULL-Pointer.
Was ja auch einleuchtend erscheint.
Ist mir selten aufgefallen, weil ich meist keine explizite Prüfung gemacht habe, sondern eher diese Mimik..
...wobei es dann eigentlich natürlich (im Nachhinein betrachtet) richtiger gewesen wäre, die Variable "handle" besser "fileptr" zu nennen.
Und noch eigentlicher müsste es dann unten heißen:
..statt nur einem "fclose(handle);"
Na ja, die Macht der Gewohnheit...
...oder war das "das macht die Gewohnheit.."?? *grübel*
Grüße
Biber
jepp, Dein C-Buch scheint recht zu haben, wie eine nicht-repräsentative Suchmaschinenbefragung zeigt.
Mehrheitlich wird dort geschrieben, dass es entweder einen Pointer auf eine FILE-Struktur zurückgibt oder eben einen NULL-Pointer.
Was ja auch einleuchtend erscheint.
Ist mir selten aufgefallen, weil ich meist keine explizite Prüfung gemacht habe, sondern eher diese Mimik..
#include <stdio.h>
int main(void)
{
char buffer[256];
FILE * handle;
handle = fopen("whatever.txt","r");
while (!feof(handle))
{
fgets(buffer, 256, handle);
printf("%s",buffer);
}
fclose(handle);
return 0;
}
Und noch eigentlicher müsste es dann unten heißen:
..
if (handle != NULL) fclose(handle);
Na ja, die Macht der Gewohnheit...
...oder war das "das macht die Gewohnheit.."?? *grübel*
Grüße
Biber