# String zerlegen



## Binio (27. März 2006)

Hallo Leute,

möchte einen String in seine einzelteile zerlegen.
Der String steht erst in einer Datei die ich einlese und dann in C zerlegen will in einzelne Arrays.

String der in der  datei(uebung1.csv) steht:"7419,Robert,Werl,59457,roentgenstr"

Ich möchte nun 7419 in kunde.nummer,Robert in kunde.name,Werl in kunde.ort, 59457 in kunde.plz und roentgenstr in kunde.strasse abspeichern und danach auf gültigkeit überprüfen. Habe mein Quellcode angehängt der zu mindest schonmal die aufsplittung ermöglicht doch habe ich total die probleme mit den datentypen. das eine ist ein pointer das andere ein array mit bestimmter indexgröße.
Weiss nun echt nicht mehr weiter.
Kann mir da einer helfen ?



```
#include <iostream>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    using namespace std;

    struct kunde
    {
        unsigned int nummer;
        char name[21];
        char ort[21];
        char plz[6];
        char strasse[21];
    };


    int main(void)
    {
        kunde test;
        char indatei[]="uebung1.csv";
        FILE *fdatenstream;
        fdatenstream=fopen(indatei,"r");
        char name[21];
        char ort[21];
        char plz[6];
        char strasse[21];
        char s[100];
        char *substring;
        int i=0;
        
           if(fdatenstream==NULL)
        {
            printf("\n Datei %s konnte nicht geöffnet werden \n",indatei);
            exit(1);
        }
        fscanf(fdatenstream,"%s",s);//für die Postleitzahl
        
        printf("%s\n", strtok(s, ","));
          while ( (substring=strtok(NULL, ",")) != NULL)
          {
            printf("%s\n", substring);

          }

        //cout<<s<<endl;
        //test.nummer=((int)s);
        
        //cout<<test.nummer<<endl<<endl;;     
        
        fclose(fdatenstream);
                
        getchar();
    }
```


----------



## deepthroat (28. März 2006)

Hi.

Das könntest du z.B. so machen:
	
	
	



```
#include <sstream>

string line;
kunde k;

if (getline(datei, line)) {
  istringstream istr(line);

  if (istr >> k.nummer && istr.get() == ',' &&
      istr.getline(k.name, 21, ',') && istr.get() == ',' &&
      istr.getline(k.ort, 21, ',') && istr.get() == ',' &&
      istr.getline(k.plz, 6, ',') && istr.get() == ',' && 
      istr.getline(k.strasse, 21)) {
    /* Eingabe OK */
  } else {
    /* Fehler */
  }
}
```

Gruß


----------

