[ C ] File access funkioniert nicht :(

BeaTBoxX

Erfahrenes Mitglied
Hallo,

gleich noch ein Problem :(

Ich habe eine Funktion geschrieben, die Text aus einer Datei auslesen soll.
Das Programm, welches diese Funktion benutzt, funktioniert auch, allerdings NUR wenn ich die exe direkt in einer DOSbox starte.

Wenn ich dagegen das Programm gleich in Visual C 6 nach dem Kompilieren starte, kommt ne Speicherschutzverletzung.
Die Funktion fopen() liefere NULL also 0x000000c zurueck.
So kann ich dann keine anderen Sachen in meine Programm debuggen, weil das Ding immer bei diesem Fehler aussteigt :(

so sieht die Funktion aus :

Code:
void fileaccess(char *dateiname, char *ziel)
{
	FILE *fp;
	char c, readout_array[2000];
	int i=0;
	
	if((fp = fopen (dateiname, "r")) == NULL )
		printf("fehler beim oeffnen");
	else
	{
		while((c = fgetc(fp))!= EOF)
		{
			readout_array[i++] = c;
			
		}
		readout_array[i] = '\0';
	}
	// printf(readout_array);
	fclose(fp);
	strcpy(ziel, readout_array);
}

PS: Ich weiss, zeichenweise ist etwas umstaendlich..soll hier ja mal Nebensache sein :)

Vielen Dank

Frank
 
Äh, das problem liegt daran das VC++ das Arbeitsverzeichnis des Programms standartmäßig falsch setzt...

geh in die projektoptionen, und stell bei Arbeitsverzeichnis, das verzeichnis ein in dem die zu lesende datei abgelegt ist, dann gehts.
 
Kleine Optimierung, falls das ganze inzwischen funktioniert:

(mögliches Problem: öffne die Datei mal mit "rt" statt nur mit "r",
t bedeutet text mode, das könnte funktionieren)

du kannst dir den strcpy sparen, wenn du dir nen Pointer auf Ziel
holst in in den schreibst

Code:
void fileaccess(char *dateiname, char *ziel)
{
	FILE *fp;
	char c;
                     char *tempziel = ziel;
	int i=0;
	
	if((fp = fopen (dateiname, "r")) == NULL )
		printf("fehler beim oeffnen");
	else
	{
		while((c = fgetc(fp))!= EOF)
		{
			tempziel[i++] = c;
			
		}
		tempziel[i] = '\0';
	}
	// printf(readout_array);
	fclose(fp);
}
 
Zurück