lowbyte1
Goto Top

funktion fclose

Verstehe nicht das bei der Ausführung des Programms immer ein "read error speicheradresse ? verwaist auf speicheradresse ?" kommt als Popup!
#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;

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

Content-ID: 66248

Url: https://administrator.de/contentid/66248

Ausgedruckt am: 24.11.2024 um 06:11 Uhr

Biber
Biber 15.08.2007 um 14:51:32 Uhr
Goto Top
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..

#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
lowbyte1
lowbyte1 15.08.2007 um 19:52:44 Uhr
Goto Top
danke für deine hilfe
im nachhinein frag ich mich selbst was ich da gemacht habe..
aber danke biber du bist eine klasse für dich !!!
lowbyte1
lowbyte1 15.08.2007 um 20:15:30 Uhr
Goto Top
hallo

noch eine frage

in meinem C buch heisst es da wen die datei nicht geöffnet werden kann,
liefert fopen() den NULL Zeiger !!

stimmt das so.

wäre für jede Professionele antwort dankbar..


es gibt nur eins 0 or 1 [lowbyte]
Biber
Biber 15.08.2007 um 21:28:04 Uhr
Goto Top
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..
#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;
}
...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:
..
if (handle != NULL) fclose(handle); 
..statt nur einem "fclose(handle);"

Na ja, die Macht der Gewohnheit...
...oder war das "das macht die Gewohnheit.."?? *grübel*

Grüße
Biber