Textdatei einlesen..

flasher
Developer
Beiträge: 467
Registriert: Dienstag 15. Juli 2003, 10:58

Textdatei einlesen..

Beitrag von flasher »

Hi

Mal etwas, dass nichts mit einem Image zu tun hat.

Ich habe eine Textdatei die wie folgt aufgebaut ist:

1,Peter,32,Hamburg Altona
2,Frank,37,Neustadt

Ich habe nun das Problem, dass ich die Datei einlesen muss und die einzelnen Felder in ein Array schreiben. Wobei es äussert praktisch wär wenn der erste Wert auch gleich als Index verwendet werden würde.

Aussehen sollte es dann so:
ARR[1] => [0] => "Peter", [1] => "32", [2] => "Hamburg Altona"
ARR[2] => [0] => "Frank", [1] => "37", [2] => "Neustadt"

Mit ARR[1][2] möchte dann gerne als Ausgabe "Hamburg Altona" haben.

Meine Frage ist, wie würdet Ihr an die Sache rangehen?
So langsam bin ich am verzweifeln.

Gruß
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Re: Textdatei einlesen..

Beitrag von Houdini »

welche Programmier-/Skriptsprache?
flasher
Developer
Beiträge: 467
Registriert: Dienstag 15. Juli 2003, 10:58

Re: Textdatei einlesen..

Beitrag von flasher »

Hi

Sorry, es handelt sich um C/C++

Ich hänge immer wieder an der selben Stelle.
Ich versuche das so:

Code: Alles auswählen

	FILE *spec;
	
	char specBuffer[50];
	char s1[50]="";
	char s2[50]="";
	char s3[50]="";
	
	spec = fopen (specFile,"r");
	if ( spec == NULL ) return 1;

	while (!feof(spec)) {
		fgets(specBuffer, 50, spec);
		printf("Zeile: %s\n", specBuffer);

		std::string buf = specBuffer;
		if( sscanf(buf.c_str(), "%s,%s,%s", s1, s2, s3) == 3 )
		{
UND GENAU HIER BEKOMME ICH DAS ANLIEGEN NICHT HIN !!!
		}
	}
	fclose(spec);
Ich hatte das schon mit Vectoren versucht aber da bekommen ich immer die Compilermeldung, dass ist char* nicht nach char konvertieren kann.
MAP oder MULTIMAP verstehe ich scheinbar genauso wenig...

Da das Array in der kompletten Klasse global verfügbar sein sein habe ich in der Headerdatei den Vektor mit vector<char> arrSpec; angelegt.
Die Fehlermeldung ensteht hier!

Code: Alles auswählen

		if( sscanf(buf.c_str(), "%s,%s,%s", s1, s2, s3) == 3 )
		{
			char* myArray [] = { s1, s2, s3 };
		=====>	arrSpec.insert( arrSpec.begin(), myArray, myArray + 3 );
		}
Fals das ganze mit XML besser gehen sollte, habe ich noch die Möglichkeit die Vorlage auch als XML Datei zu generieren:

Code: Alles auswählen

<list>
     <person
               id="1"
               name="Horst"
               ort="Stuttgart"
     />
</list>
Gruß
flasher
Developer
Beiträge: 467
Registriert: Dienstag 15. Juli 2003, 10:58

Re: Textdatei einlesen..

Beitrag von flasher »

*Update*

Ich habe das ganze jetz auf XML umgestellt. Da gab auf jeden Fall weniger Probleme mit dem Auslesen der Daten.
Jetzt habe ich nun drei char Arrays mit dem jeweilig passenden Inhalt.
Jetzt bleibt noch die Frage offen wie ich die drei char Arrays ins eins Packe.

btw:
Ich habe mir wegen der XML Geschichte mal Deinen Code (Houdini) zum Internetradio durchgelesen und verwendet.
Ich hänge jetzt übertragen gesehen hier : processPlaylistUrl(url, name);

Bei mir müsste ja jetzt sowas stehen wie: packeDreiCharInEins(id, name, ort);
Damit ich später mit arr[0][2] die Ausgabe "Stuttgart" oder mir arr[1][2] Hamburg bekomme.

Gruß
flasher
Developer
Beiträge: 467
Registriert: Dienstag 15. Juli 2003, 10:58

Re: Textdatei einlesen..

Beitrag von flasher »

Und jetzt mal das letzte Update. Ich verzweifel.

Ich habe das array im Headerfile angelegt: char *arrSpec[9][3];
Obwohl ich gerne ein Array hätte dessen grösse, zumindest der ersten Ebene, nicht bekannt ist.

Code: Alles auswählen

				if ( id != NULL ) {
					arrSpec[listPos][0] = id;
					arrSpec[listPos][1] = name;
					arrSpec[listPos][2] = ort;
					printf("Gefunden : %s %s %s\n", id, name, ort);
				}
Auf der Console erscheint auch:
Gefunden : 1 Klaus Hamburg
Gefunden : 2 Fritz Berlin
Gefunden : 3 Hans Ulm

Gehe ich später hin und lasse mir arrSpec[0][0 bis 2] ausgeben sieht es so aus:

Code: Alles auswählen

printf("Was ist in 1? : %s %s %s\n", arrSpec[0][0], arrSpec[0][1], arrSpec[0][2]);
Was ist in 1? : HI(ueg, HIHs HIhurg

Gruß
flasher
Developer
Beiträge: 467
Registriert: Dienstag 15. Juli 2003, 10:58

Re: Textdatei einlesen..

Beitrag von flasher »

Hat sich dann erledigt.
Ich sollte in Zukunft vieleicht den Abschnitt über Vektoren genauer lesen.

Gruß und Close...