Problem csv



  • Hallo ich habe ein kleine Problem. Ich versuche die ganze Zeit eine csv Datei in einer funktion einzulesen. Leider bekomme ich immer in die erste if Abfrage welche mir angibt das ich nicht auf die Datei zugreifen konnte.
    Kann mir jemand weiter helfen?

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define MAX_DATENSAETZE 32
    #define MAX_ZEILENLAENGE 128
    
    #define FLDLEN_NAME 			17
    #define FLDLEN_VORNAME 			17
    #define FLDLEN_GEBURHTSTAG		11
    #define FLDLEN_VEREIN 			33
    
    const char *position[] = {
    	"Tor",
    	"Abwehr",
    	"Mittelfeld",
    	"Angriff"
    };
    
    /*
     *
     */
    struct spieler  {
    
    	int trikot;
    	int position_code;
    	char name[FLDLEN_NAME];
    	char vorname[FLDLEN_VORNAME];
    	char geburtstag[FLDLEN_GEBURHTSTAG];
    	char verein[FLDLEN_VEREIN];
    	int spiele;
    	int tore;
    
    };
    
    typedef struct spieler Spieler;
    
    int main(void) 
    {
        FILE *LeseDaten = NULL;
        int x = 0;
        Spieler xSpieler[MAX_DATENSAETZE];
    
       LeseDaten = fopen("C:\\Benutzer\\test\\xt.csv","r"); 
       //LeseDaten = fopen(argv[1], "r"); tes\\
        if(LeseDaten == NULL)
        {
            printf ("Fehler beim Oeffnen der csv\n");
            fflush(stdin);
            getchar();
            return 1;
        } 
         while((fscanf(LeseDaten, "%d,%d,%s,%s,%d,%s,%d,%d\n", 
         xSpieler[x].trikot,xSpieler[x].position_code,xSpieler[x].vorname,xSpieler[x].name,
         xSpieler[x].geburtstag,xSpieler[x].verein, xSpieler[x].spiele,xSpieler[x].tore)) != EOF)
         {
               x++; 
         } 
          printf("%d, %d, %s\n", xSpieler[0].trikot, xSpieler[0].position_code, xSpieler[0].vorname);        
          printf("%d, %d, %s\n", xSpieler[1].trikot, xSpieler[1].position_code, xSpieler[1].vorname); 
         fflush(stdin);
         getchar();
         return 0;
    }
    

  • Mod

    Wenn du mal auf das Syntaxhighlighting hier im Forum schaust, dann kannst du den Grund vielleicht selber erraten.

    Tipp: Mach dich mal über die verschiedenen Bedeutungen des '\'-Zeichens schlau und in welcher Reihenfolge der Präprozessor wie genau was macht.



  • Hallo ich habe gstern 5 Stunden nach dem Fehler gesucht.Leider verstehe ich nicht genug um darauf zu kommen und mein Buch hilfst mir auch nicht weiter.



  • Schau dir mal die Farbe von der Zeile 50 an: grün
    So wird hier eine Kommentarzeile dargestellt.

    Schau dir mal die Farbe von der Zeile 51 an: grün
    Auch einen Kommentarzeile.

    [Hoecker] Wieso das denn! [/Hoecker]

    Ein \ am Zeilenende leitet eine Fortsetzungszeile ein.
    D.h. die nachfolgende Zeile gehört noch mit dazu.

    Also mach diese überflüssigen \\ am Ende von Zeile 50 weg.



  • stimmt das ist ein Fehler. Ich habe gestern einiges versucht aber es geht trotzdem nicht. Eigentlich sehen die Zeilen im Code so aus:

    LeseDaten = fopen("C:\\Benutzer\\test\\xt.csv","r");  
        if(LeseDaten == NULL)
        {
            printf ("Fehler beim Oeffnen von %s\n",argv[1]);
            fflush(stdin);
            getchar();
            return 1;
        }
    

    Leider kann ich jetzt immer noch nichts einlesen.



  • Wenn fopen NULL zurückliefert, dann kann fopen die angegebene Datei nicht in dem angegebenen Modus öffnen, d.h. du hast selbst schuld.
    Mit perror lässt sich dann ein Fehlertext ausgeben, der nähere Infos gibt.

    Dein Code lässt auch vermuten, dass du nicht weißt, was du tust:

    LeseDaten = fopen("C:\\Benutzer\\test\\xt.csv","r");  /* hier ist der Dateiname "C:\\Benutzer\\test\\xt.csv" */
        if(LeseDaten == NULL)
        {
            printf ("Fehler beim Oeffnen von %s\n",argv[1]); /* ... und hier plötzlich argv[1] */
            fflush(stdin); /* standardinkonformer Anfängerschrott kommt noch hinzu */
            getchar();
            return 1;
        }
    

    Da du offensichtlich nicht Willens oder in der Lage bist, dein Problem qualifiziert zu schildern, damit du qualifizierte Antworten erhälst, die dir weiterhelfen, hier nochmal explizit ein Teil aus den Neulingshinweisen, die du nicht gelesen/beachtet hast:

    Wenn du Code postest, dann bitte nur ein kleines darstellendes Programm, welches man sofort und ohne Umwege kompilieren kann. An dieser kleinen Demo soll dein Problem klar dargestellt sein. Die Demo darf keinen Code enthalten, der nicht am Problem beteiligt ist (abgesehen von allem, was zu einem kompilierbaren Programm gehoert).



  • Zeile 58 bis 60:
    Ein Format soll wohl anders?
    Wie muss das aussehen, wenn ich mit fscanf ein int lesen will? -> 4x ergänzen.



  • Wutz schrieb:

    Da du offensichtlich nicht Willens oder in der Lage bist, dein Problem qualifiziert zu schildern, damit du qualifizierte Antworten erhälst, die dir weiterhelfen, hier nochmal explizit ein Teil aus den Neulingshinweisen, die du nicht gelesen/beachtet hast:

    warst du eigentlich schon immer so drauf, so wie ein wutz?



  • name == programm



  • b.b. schrieb:

    Wutz schrieb:

    Da du offensichtlich nicht Willens oder in der Lage bist, dein Problem qualifiziert zu schildern, damit du qualifizierte Antworten erhälst, die dir weiterhelfen, hier nochmal explizit ein Teil aus den Neulingshinweisen, die du nicht gelesen/beachtet hast:

    warst du eigentlich schon immer so drauf, so wie ein wutz?

    Dieses Forum bzw. deren Besucher helfen sich gegenseitig gerne bei Fragen oder Problemen mit der Programmiersprache C.
    Allerdings gibt es - wie überall im Leben und aus gutem Grund - gewisse Grundregeln, an die man sich zu halten hat. Das ist einerseits so, damit der Aufwand für die !!!kostenlos!!! Hilfsbereiten sich in Grenzen hält und hat daneben noch den praktischen Lerneffekt, dass eine präzise gestellte Frage am besten dazu geeignet ist, eine präzise Antwort einzubringen.

    Außerdem helfen die Vorgaben zum Stellen der Frage meist, das Problem sogar ganz alleine zu lösen.

    Wer sich trotz allem nicht an die Vorgaben hält, darf auch ruhig dran erinnert werden...


Log in to reply