Aufteilen/Zerlegen/Parsen brauche HILFE

1alex1

Grünschnabel
Sting zerlegen

Hallo. (Ich benutzte den Borland C++ Compiler)
Habe folgendes Problem:
Ich hab eine CSV Datei die ca so aussieht (ID Nummer;Vorname;Nachname;Adresse;Tel.Nr.)
z.B.:
Code:
001;Max;Mustermann;erste Strasse;12345
      002;Anette;Musterfrau;zweite Strasse;67890

Jetzt möchte ich anhand eines C++ Programmes die Datei einlesen (also immer eine Zeile) und dann diese zerlegen und einem struct zuweisen.

mein Struct sieht volgendermaßen aus:
PHP:
struct daten
       {
       	int id;
       	char name[20];
       	char nachname[20];
       	char adr[40];
       	char tel[20];
       };

Und das Unterprogramm hab ich auch schon angefangen.
Aber hab bis jetzt nur mal dass es eine Zeile einließt.
Wie schaffe ich es jetzt dass es diese Zeile zerlegt und den einzelnen Variablen des Structs zuweißt.
Hab gehört dass das vielleciht mit fstream gehen soll. Aber hab keinen Plan wie?
Bitte helft mir.
Das Unterporgramm sieht so aus:
PHP:
void csv_import(char pfad[])
       {
       	FILE *imp;
       	char temp[255];
       
       	imp = fopen(pfad, "r+");
       
       	//fgets , da bei fscanf bei leer/trennzeichen abgebrochen wird
       
       	while(fgets(temp, 255, imp))
       	{
       		cout << temp;
       	}
       
       	fclose(imp);
       }
Das Programm funktioniert auch einwandfrei. Ich weiß nur nicht wie ich das mit dem zerlegen jetzt machen muss. Bitte helft mir.

Danke jetzt schon mal für eure Hilfe
 
Zuletzt bearbeitet:
strtok
Syntax:

#include <string.h>
char *strtok( char *str1, const char *str2 );

The strtok() function returns a pointer to the next "token" in str1, where str2 contains the delimiters that determine the token. strtok() returns NULL if no token is found. In order to convert a string to tokens, the first call to strtok() should have str1 point to the string to be tokenized. All calls after this should have str1 be NULL.

For example:

char str[] = "now # is the time for all # good men to come to the # aid of their country";
char delims[] = "#";
char *result = NULL;
result = strtok( str, delims );
while( result != NULL ) {
printf( "result is \"%s\"\n", result );
result = strtok( NULL, delims );
}

The above code will display the following output:

result is "now "
result is " is the time for all "
result is " good men to come to the "
result is " aid of their country"

Quelle : http://cppreference.com/stdstring_details.html#strpbrk
Ich hoffe das hilft !
rya.
Scorcher24
 
Zurück