CSV Datei einlesen?



  • Hallo ich habe in kleines Problem, damit möchte ich eine csv Datei einlesen.

    Csv-Date:

    HANS;LUSTIG;2008
    PAUL;TRAURIG;2009
    PETER;METER;2005
    

    Programm:

    #include <stdio.h>
    #include <stdlib.h>
    
    struct Daten
    {
    	char vorn[40];
    	char name[40];
    	int jahr;
    };
    
    int main(int argc, char **argv)
    {
    	FILE *fz = NULL;
    	struct Daten *daten = NULL;
    	int x = 1;
    	int i;
    
    	fz = fopen ("C:\\Test.csv", "r");
    
    	if (fz == 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(fz, "%[^;];%[^;];%[^\n]\n", daten[x - 1].name, daten[x - 1].vorn, &daten[x - 1].jahr) == EOF)
    			break;
    
    		x++;
    	}
    
    	for(i = 0; i < x; i++)
    	{
    		printf("%s, %s, %d\n", daten[i].vorn, daten[i].name, daten[i].jahr);
    	}
    
    	fflush(stdin);
    	getchar();
    	return 0;
    }
    

    Das ganze funktioniert auch eigentlich ganz gut, nur beim Jahr macht er mist und ich habe keine Ahnung warum.

    So sieht die Ausgabe aus:

    LUSTIG, HANS, 942682162
    TRAURIG, PAUL, 959459378
    METER, PETER, 892350514
    ════════════════════════════════════════════════════════════════════════════════
    ════²²²²½½½½½½½½¯■¯■, ════════════════════════════════════════════²²²²½½½½½½½½¯■
    ¯■, -842150451
    


  • Hat niemand eine idee???



  • Hallo lord_fritte,

    jahr ist bei dir ein int aus der Datei wird aber ein string ausgelesen.

    char* str = "2005";
    -------ungleich-------------
    int jahr = 2005;



  • ich lese es jetzt mit %d\n und es geht, danke.


Anmelden zum Antworten