Textfile verarbeiten?

PHPer

Erfahrenes Mitglied
Hi ho!

Ich bin z.Z. dabei C zu lernen, und möchte nun eine Textdatei auslesen und verarbeiten. Die Textdatei ist folgendermaßen aufgebaut:

FILE "file.mp3"
IMAGE "image.jpg"
ARTIST "Artist"
TITLE "Title"
ALBUM "Album"
YEAR "0000"
GENERE "Genere"

FILE "file2.mp3"
IMAGE "image.jpg"
ARTIST "Artist"
TITLE "Title"
ALBUM "Album"
YEAR "0000"
GENERE "Genere"

usw...

Nun möchte ich diese Datei auslesen, und die darin gespeicherten Daten in ein Array stecken, mit dem ich dann weiterarbeiten kann. Also dass ich dann z.B. über info[1][FILE] oder so die Daten entsprechend abrufen kann...

So, wie mache ich sowas jetzt?

Danke Euch schonmal... ;)
 
Moin moin,
du könntest dir ne Structur bauen, die die Elemente aufnimmt,

Code:
struct mp3{
char File[30];
char Image[30]
"
"
"
int Year;
"
"
"
};

Die Parameter füllst du so wie du se haben willst.

von der Struktur kann man dann einen Array anlegen, für 50 Elemente sähe das dann so aus
Code:
struct mp3 mp3list[50]

um auf das Jahr vom 11 Element zuzugreifen und in einer neuen Variablen zu speichern
Code:
int neueVariable = mp3list[10].Year

Zum Auslesen schau dir mal die Funktion "fgets" bzw. "fscanf" an.

Gruss Michael
 
Hi ho!

Das mit der Struktur klingt gut. Aber hast Du bezüglich des Einlesens nicht noch etwas für mich? Irgendwie komm ich damit überhaupt nicht klar... :confused:
 
Um ne ganze Zeile einzulesen mach mal folgendes
Code:
	char cgel[255];
         FILE *pf = fopen("Dateiname.txt","r");
	if(!pf)return;
	ZeroMemory(cgel,sizeof(char)*255);//speicher init
	if(!fgets(cgel,255,pf))return "";//Zeilelesen
         fclose(pf);

fgets liest dabei bis erreichen von '\n' bzw bis 255 Zeichen.
Du solltest aber auf Sachen wie Terminator NULL und Array Grenzen achten. C/C++ bieten da viel Freiheit.

Gruss Michael
 
Hi ho!

Danke Dir erstmal. Hab das jetzt mal so übernommen. Der kennt aber ZeroMemory nicht. Muß ich dafür was spezielles Includen?
 
Ist das nicht in der stdlib.h drin?
Schau mal in den MSDN nach...
Sorgt nur dafür, das der String mit Nullen gefüllt wird.

kannste auch weglassen, oder mit ner Schleife, oder händisch machen...

Michael
 
K.a. wo das genau drin ist. Villeicht habe ich auch eine andere stdlib.h oder so. K.a. ;)

Aber gut, ok. Per Hand kann ich das auch machen. Nur eines noch, wenn ich die Daten da einlese, habe ich den Kram dann ja in cgel stecken. Wie ordne ich den jetzt in die Mp3 Struktur ein?
 
je nachdem wie du das aufbaust kannst du das sofort in die Struktur schreiben. Dann passt mein Beispiel natürlich nicht mehr aber das solte wohl kein Problem darstellen;-)

Wenn du nicht direkt in die Struktur einliesst, dann musst du strncpy nehmen um den String zu kopieren.

Michael
 
Aso, naja... einlesen würde ich das ja nun in einer while schleife:
Code:
FILE *playlist = fopen(dat) // in date steckt der Dateiname incl. Pfad
int i;

if(playlist) {
while(!feof(playlist)) {
// Hier dann praktisch mit fgets einlesen:
fgets(text[i], 255, playlist)
i++;
}
}

So hab ich das imo drin stehen. Nur weis ich halt nicht wie ich da jetzt unterscheiden kann ob ne Zeile nun ein FILE oder ein IMAGE oder was auch immer enthält...
 
Wenn Text dann 255 Zeichen , besser 256 und letztes Zeichen für die Terminator NULL, hat. Dann sollte das passen...

Darfst aber bei fopen nicht den zweiten Parameter vergessen."r" für nur lesen "w" für schreiben.

Michael
 

Neue Beiträge

Zurück