ah-chimedes
Ensign
- Registriert
- Mai 2008
- Beiträge
- 146
Hallo, bräuchte mal ein bissel Hilfe ich möchte eine CSV-Datei in ein struct einlesen und dann wieder ausgeben. Habe ich nur eine Zeile klappt alles bestens. Aber mit mehreren stürzt das Porg immer ab. Aber irgenwie klappts net.
Hier mal mein Quelltext:
CSV hat folgendes Format:
Name;Vorname;Anrede;Strasse;Hausnummer;PLZ;Ort;Kunde_seit
Beispielbau GmbH;;Firma;Industriestr.;1;98765;Werkstatt;2005
Maurer;Evelin;Frau;Kleistr.;11;38440;Wolfsburg;2009
Muster;Max;Herr;Musterstr.;9;12345;Musterstadt;1991
Schuster;Sarah;Frau;Am Walde;12;54321;Musterdorf;200
#include <stdio.h>
#include <stdlib.h>
struct Daten
{
char name[200];
char vorname[200];
char anrede[200];
char strasse[200];
int hausnummer;
int plz;
char ort[200];
int kundeseit;
};
int main(int argc, char **argv)
{
FILE *filezeiger = NULL;
struct Daten *daten = NULL;
int x = 1;
int i;
filezeiger = fopen ("test.csv", "r");
if (filezeiger == NULL)
{
printf ("Fehler beim Oeffnen von %s\n",
argv[1]);
fflush(stdin);
getchar();
return 1;
}
while(1)
{
daten = realloc(daten, x * sizeof(struct Daten));
if(daten == NULL)
{
printf ("Es konnte kein Speicher angelegt werden.\n");
fflush(stdin);
getchar();
return 1;
}
if(fscanf(filezeiger, "%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^\n]\n", daten[x - 1].name, daten[x - 1].vorname, daten[x - 1].anrede, daten[x - 1].strasse,
&daten[x - 1].hausnummer, &daten[x - 1].plz, daten[x - 1].ort, &daten[x - 1].kundeseit) == EOF)
break;
x++;
}
for(i = 0; i < x; i++)
{
printf("%s, %s, %s, %s, %d, %d, %s, %d \n", daten.name, daten.vorname, daten.anrede, daten.strasse, daten.hausnummer, daten.plz, daten.ort, daten.kundeseit );
}
fflush(stdin);
getchar();
return 0;
}
Hier mal mein Quelltext:
CSV hat folgendes Format:
Name;Vorname;Anrede;Strasse;Hausnummer;PLZ;Ort;Kunde_seit
Beispielbau GmbH;;Firma;Industriestr.;1;98765;Werkstatt;2005
Maurer;Evelin;Frau;Kleistr.;11;38440;Wolfsburg;2009
Muster;Max;Herr;Musterstr.;9;12345;Musterstadt;1991
Schuster;Sarah;Frau;Am Walde;12;54321;Musterdorf;200
#include <stdio.h>
#include <stdlib.h>
struct Daten
{
char name[200];
char vorname[200];
char anrede[200];
char strasse[200];
int hausnummer;
int plz;
char ort[200];
int kundeseit;
};
int main(int argc, char **argv)
{
FILE *filezeiger = NULL;
struct Daten *daten = NULL;
int x = 1;
int i;
filezeiger = fopen ("test.csv", "r");
if (filezeiger == NULL)
{
printf ("Fehler beim Oeffnen von %s\n",
argv[1]);
fflush(stdin);
getchar();
return 1;
}
while(1)
{
daten = realloc(daten, x * sizeof(struct Daten));
if(daten == NULL)
{
printf ("Es konnte kein Speicher angelegt werden.\n");
fflush(stdin);
getchar();
return 1;
}
if(fscanf(filezeiger, "%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^\n]\n", daten[x - 1].name, daten[x - 1].vorname, daten[x - 1].anrede, daten[x - 1].strasse,
&daten[x - 1].hausnummer, &daten[x - 1].plz, daten[x - 1].ort, &daten[x - 1].kundeseit) == EOF)
break;
x++;
}
for(i = 0; i < x; i++)
{
printf("%s, %s, %s, %s, %d, %d, %s, %d \n", daten.name, daten.vorname, daten.anrede, daten.strasse, daten.hausnummer, daten.plz, daten.ort, daten.kundeseit );
}
fflush(stdin);
getchar();
return 0;
}