textdatei aulesen....wie immer...

shrewm

Mitglied
Hallo, wenn ich folgende Funktion durchlaufen lasse, wird die erste Zeile der Textdatei ausgelesen und auch mit beiden Variablen richtig ausgegeben. Allerdings bekomme ich dann von Windows eine Fehlermeldung, dass der Vorgang "read" nicht auf dem Speicher ausgeführt werden kann. Ich benutze MVC++ 6.0
Code:
void auflisten()
{
	FILE *pf;
	char filename[255] = "liste.txt";
	char aufteilen[255];
	char *variablen;
	char temp[255];
	char trennung[2] = "=";
	string bearbeitung, test, test2;

	if(pf = fopen(filename, "r"))
	{
		while(!feof(pf))
		{
			bearbeitung = fgets(temp, 1000, pf);
			strcpy(aufteilen,bearbeitung.c_str());
			variablen = strtok(aufteilen,trennung);
			while (variablen != NULL)
			{
				variablen = strtok(NULL,trennung);
				test = variablen;
				variablen = strtok(NULL,trennung);
				test2 = variablen;
				cout << test << " - " << test2 << endl;
			}
		}
	}
	fclose(pf);
}
Der Aufbau der Textdatei sieht so aus:
ID=Text=MehrText
Und ich möchte eben dass Variable
Test = Text
und Varaible
Test2 = MehrText
festgelegt werden.

Wo liegt mein Fehler?
 
Zuletzt bearbeitet:
Habe gerade keinen Compiler zur Hand, aber mal ne Frage, wieso packst du den Teil erst in einen STRING, und dannach in ein CHAR

Wieso lässt du nicht direkt immer nur bis zum Trennzeichen einlesen, und speicherst das dann direkt in deinem char* ? Wäre das zu einfach oder wieso machst du dir das so kompliziert ? ;)

Und das
" test2 = variablen;"
kann ich auch nicht begreifen, wieso nimmst du die Zeile darüber nicht gleich test2 ? Die Variable "variablen" wird eh danach nicht mehr verwendet, sondern beim nächsten mal eh wieder überschrieben...


Aber wenn ein Fehler bezüglich Read kommt, hast du meistens/fast immer was mit dem Pointer falsch gemacht, also die meisten würden dir empfehlen erstmal alle Variablen vorher zu initialisieren, z.b. = NULL setzen...


Evtl pack ich nachher noch den Compiler aus, und dann hack ich das mal rein...
 
Zurück