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-Key: 66248

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

Printed on: April 19, 2024 at 20:04 o'clock

Member: Biber
Biber Aug 15, 2007 at 12:51:32 (UTC)
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
Member: lowbyte1
lowbyte1 Aug 15, 2007 at 17:52:44 (UTC)
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 !!!
Member: lowbyte1
lowbyte1 Aug 15, 2007 at 18:15:30 (UTC)
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]
Member: Biber
Biber Aug 15, 2007 at 19:28:04 (UTC)
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