Lesen Werte aus CSV Datei in Variablen

Ich versuche zu schreiben, ein einfaches Stück code, das Lesen von Werten aus einer CSV-Datei mit maximal 100 Einträge in ein array von structs.

Beispiel für eine Zeile der CSV-Datei:

1,Mr,James Quigley,Director,200000,0

Ich verwende den folgenden code in die lese-Werte, aber wenn ich drucken Sie die Werte, die Sie falsch sind

for(i = 0; i < 3; i++) /*just assuming number of entries here to demonstrate problem*/
    {
    fscanf(f, "%d,%s,%s,%s,%s,%d,%d", &inArray[i].ID, inArray[i].salutation, inArray[i].firstName, inArray[i].surName, inArray[i].position, &inArray[i].sal, &inArray[i].deleted);
    } 

Dann, wenn ich drucken der ersten Namen, die Werte sind jeweils der erste name:

for(j = 0; j < 3; j++) /* test by printing values*/
    {
    printf("Employee name is %s\n", inArray[j].firstName);
    } 

Gibt ames,Quigley,Director,200000,0 und so weiter auf diese Weise. Ich bin sicher, dass es ist, wie ich das format der fscanf Linie ist, aber ich kann nicht ankommen es zu wirken.

Hier ist meine Struktur bin ich beim Lesen in:

typedef struct Employee
    {
    int ID;
    char salutation[4];
    char firstName[21];
    char surName[31];
    char position[16];
    int sal;
    int deleted;
    } Employee;
  • %s ist gierig, denke ich, und liest es ein Wort... Er findet die %d, des ganzzahligen Teils, dann die ,, und dann hat es zu Lesen, einen string. , ist gültig in einem string, so liest es bis zum Ende der Zeile (es ist kein Platz, bis dann), nicht bis zum ersten Komma... Und der rest bleibt leer. (Aus dieser Antwort)
  • Du hast eine firstN und Vorname in der Buchung - was ist das? Kannst du die Struktur so gut?
  • Korrigiert die var-Namen und fügte hinzu, struct
InformationsquelleAutor Dawson | 2013-09-11
Schreibe einen Kommentar