Speicherzugriffsfehler bei strcmp()



  • Hi(gh)!

    Zwischenzeitlich habe ich mein Klimadaten-Programm auf eine Gesamtdatei mit mehreren (im Prinzip beliebig vielen) Einträgen für jeweils eine Station-Klimaepochen-Kombination umgestellt... Schreiben klappt problemlos, bei der Lesefunktion bekomme ich allerdings immer einen Speicherzugriffsfehler, wenn ich den Namen der eingebenen Wetterstation mit den bereits in der Datei eingetragenen Funktionsnamen vergleichen will. Hier der Code:

    struct Klimadatensatz // global!
    {
      char* station;
      char cperiod[10];
      char latitude[11];
      char longitude[12];
      float temperatur[DIM];
      float niederschlag[DIM];
      char formula[4];
    } Eintrag;
    
    [...]
    
    bool lese(char*);
    
    [...]
    
    int main(void)
    {
      char f, r;
      char* station;
      size_t statsize = 30;  
      
      do
      {
        // system("clear");
        printf("              -----------------------------------------\n");
        printf("              | 1 - Datensatz laden und anzeigen      |\n");
        printf("              | 2 - Datensatz eingeben und speichern  |\n");
        printf("              | x - Programm beenden                  |\n");
        printf("              -----------------------------------------\n\n");
        printf("Funktion: ");
        f=getchar();
        getchar();
        switch(f)
        {
          case '1':
    	printf("\nName der Wetterstation: ");
            station = (char*)malloc(statsize * sizeof(char));
            if (station == NULL)
            {
              perror("Speicher kann nicht zugewiesen werden");
              exit(1);
            }
            f = getline(&station,&statsize,stdin);
            station[f-1]='\0';
            lese(station);
    	/* display(&Eintrag);*/
          break;
    
    [...]
    bool lese(char* station)
    {
      bool found=false;
      char i; // Zählvariable
      
      FILE* fp;
      fp = fopen("wikipedia_klimadaten.dat", "rb"); // Datei wird als Binärdatei geöffnet!
    
      if (!fp)
      {  
        printf("\nDatei kann nicht geöffnet werden!");
        return false;
      }
      
      while (fread(&Eintrag, sizeof(Eintrag), 1, fp) == 1 && fp)
      {
        if (strcmp(Eintrag.station, station) == 0)
        {  
          found = true;
          break;
        }
      } 
     
     [...]
    
    

    Per manuellem Debugging habe ich heraus gefunden, dass strcmp() offensichtlich der "Übeltäter" ist - aber wieso? Die Eingabetypen stimmen, beide Zeiger sind definiert... ich kann mir da keinen Reim drauf machen!



  • @yadgar sagte in Speicherzugriffsfehler bei strcmp():

    char* station;

    Es macht keinen Sinn, nur einen Zeigerwert in eine Datei reinzuschreiben und wieder auszulesen...



  • @th69 sagte in Speicherzugriffsfehler bei strcmp():

    @yadgar sagte in Speicherzugriffsfehler bei strcmp():

    char* station;

    Es macht keinen Sinn, nur einen Zeigerwert in eine Datei reinzuschreiben und wieder auszulesen...

    In welchem Zusammenhang?



  • @yadgar sagte in Speicherzugriffsfehler bei strcmp():

    @th69 sagte in Speicherzugriffsfehler bei strcmp():

    @yadgar sagte in Speicherzugriffsfehler bei strcmp():

    char* station;

    Es macht keinen Sinn, nur einen Zeigerwert in eine Datei reinzuschreiben und wieder auszulesen...

    In welchem Zusammenhang?

    char* station; im Klimadatensatz ist nur eine Adresse. Nach write+read steht dort eine ungültige Adresse, nicht aber der String. So wie du die Struktur schreibst und liest müsste es char station[eineLaenge]; lauten. Dann kannst du natürlich keine beliebig lange Namen verwenden.



  • Hi(gh)!

    @manni66 sagte in Speicherzugriffsfehler bei strcmp():

    char* station; im Klimadatensatz ist nur eine Adresse. Nach write+read steht dort eine ungültige Adresse, nicht aber der String. So wie du die Struktur schreibst und liest müsste es char station[eineLaenge]; lauten. Dann kannst du natürlich keine beliebig lange Namen verwenden.

    Du hast recht: ich habe mir die meine Datei klimadaten_wikipedia.dat (zur Zeit zwei Datensätze, "Köln" und "Bonn") mal im Texteditor angesehen - und statt der Ortsnamen fand ich da nur kryptischen "Datenglitsch"!

    Das Problem ist aber: ich will auch Namen eingeben können, die aus mehreren Wörtern bestehen - dann geht scanf() nicht, und schon die Speicherreservierung für getline() funktioniert mit einem char-Array nicht! Oder gibt es auch noch andere Möglichkeiten?

    (später...)

    Ich habe das Problem zwischenzeitlich lösen können, und zwar mit fgets()... das sieht schon ganz gut aus, Lesen und Anzeigen eines einzelnen Datensatzes klappt auch einwandfrei! Dann habe außerdem noch eine Funktion hinzugefügt, die alle Datensätze aus der Datei als Liste anzeigt (da muss ich noch etwas Feinarbeit bei der Formatierung erledigen... kann man eigentlich für float-Zahlen eine Höchstbreite angeben?).

    Als nächstes kämen dann eine Sicherheitsabfrage zur Verhinderung von Mehrfacheinträgen (d. h. Datensätze mit gleichem Stationsnamen und Klimaperiode), eine Sortierfunktion (mit Quicksort), eine Bearbeitungs- und Löschfunktion für einzelne Datensätze...

    Bis bald im Khyberspace!

    Yadgar



  • Du hast keine Ahnung davon, was scanf alles kann.

    • getline ist kein Standard
    • getchar() Gedöns ist Unsinn
    • dein malloc-Gebrauch ist Unsinn
    • dein nul-Terminator Gefrickel ist schauderhaft anzusehen
    • deine "Design"-Entscheidung, die struct 1:1 in eine Datei zu pressen ist fehleranfällig, byteorderabhängig, nicht menschenlesbar, unpraktikabel (z.B. bei fehlenden Werten), ...
    • ...


  • Ich habe schon ewig nicht mehr C programmiert, aber ich würde fgets nehmen und das mitgelesene ’\n’ rausschmeißen.



  • @yadgar sagte in Speicherzugriffsfehler bei strcmp():

    Das Problem ist aber: ich will auch Namen eingeben können, die aus mehreren Wörtern bestehen - dann geht scanf() nicht,

    Doch, das geht, wenn man den %[ Formatspecifier richtig anwendet.

    Muss immer noch etwas gegen globale Variablen geschrieben werden?

    Ein so allgemeiner Begriff wie lese ist als Name für eine sehr spezielle Funktion (wie das Lesen von Klimadaten) auch unangebracht.

    Wofür ist das && fp bei while (fread(&Eintrag, sizeof(Eintrag), 1, fp) == 1 && fp) da?



  • Hi,

    alternativ kannst Du natürlich auch ein bisschen Mühe darauf verwenden, um Dir einen einfachen Zeileneditor zu bauen. Wenn Du dann die Eingfabe ohne Echo zeichenweise vom Eingabeterminal abholst kannst Du da ne Menge mit machen. Neben dem Aufbauen des Eingabestrings kannst Du auch noch Tests und Konvertierungen vornehmen und ihn für Sondereingaben verwenden.
    Der Rückgabewert kann entweder die eingegebene Zeichenkette sein, oder ein Steuerwert der es ermöglicht zur vorigen oder nächsten Eingabe bzw. zu vorigen oder nächsten Satz oder zum Anfang oder Ende der eingegebenen Datensätze zu springen. Der einfachste Weg ist einen bestimmten Bildschirmbereich dafür vorzusehen (im Textmodus mit Zeile und Spalte sowie Länge zu addressieren) und den beim Aufruf erst mal zu sichern. Dann den für die Eingabe bereitsteheden Bereich kennzeichnen (z.B. wie bei dBase durch einrahmen mit Doppelpunkten oder durch Invers darstellen...) Den Eingabepuffer mit der ggf. gesetzten Vorgabe füllen, den Kursor positionieren und los gehts. Mit hoch oder runter oder Enter wird die Funktion verlassen, mit Bild hoch oder runter ebenfalls und mit ESC werden getätigte Eingaben bzw. Änderungen verworfen.
    mit einem Switch kannst Du dann je nach Rückgabewert zwischen einzelnen Eingabepositionen hin und herspringen.

    So ein Zeileneditor macht zwar für den Anfang ein wenig Arbeit, aber man kann sehr viel und vor allem die unterschiedlichsten Dinge daran lernen.

    Aus meiner Sicht ist ein ordentliches System, in dem man innerhalb der Eingabezeile beliebig ändern kann, an der Eingabe unzulässiger Zeichen gehindert wird (ggf hörbar) und auch in schon abgearbeitete Eingabefelder wieder zurück kommt eine Grundvoraussetzung um sinnvoll mit vorhandenen Daten spielen und experimentieren zu können.

    Fällt mir gerade noch ein, eine Eingabeaufforderung sollte so eine Eingabefunktion natürlich auch ausgeben.

    Gruß Mümmel



  • Hi(gh)!

    @wutz sagte in Speicherzugriffsfehler bei strcmp():

    Du hast keine Ahnung davon, was scanf alles kann.

    Leider erfährt man in den üblichen (auch Online-)Handbüchern nicht viel darüber...

    • getline ist kein Standard

    Ich weiß, mittlerweile habe ich es durch fgets ersetzt!

    • getchar() Gedöns ist Unsinn

    Ohne getchar() werden etliche Ausgaben einfach übersprungen...

    • dein malloc-Gebrauch ist Unsinn
    • dein nul-Terminator Gefrickel ist schauderhaft anzusehen

    Wie gesagt, mittlerweile verwende ich fgets, das kommt ohne Speicheranforderung aus.

    • deine "Design"-Entscheidung, die struct 1:1 in eine Datei zu pressen ist fehleranfällig, byteorderabhängig, nicht menschenlesbar, unpraktikabel (z.B. bei fehlenden Werten), ...
    • ...

    Fehlende Werte werden entsprechend kodiert (z. B. -9999 oder so etwas). Byteorderabhängig? Das wäre eventuell relevant, wenn ich "klima" auf den Atari ST oder den C 64 (!) portiere... sind die beiden big-endian?

    Nicht menschenlesbar? O.k., das ist ein Punkt, der mich eventuell wurmt - bei Schreiben mit fprintf hat man natürlich den Vorteil, dass alles in ASCII-Klartext in der Datei steht und man Fehleingaben notfalls mit einem normalen Texteditor korrigieren kann...

    Bis bald im Khyberspace!

    Yadgar



  • Hi(gh)!

    @dirkb sagte in Speicherzugriffsfehler bei strcmp():

    Doch, das geht, wenn man den %[ Formatspecifier richtig anwendet.

    Und wer erklärt mir, wie ich das mache?

    Muss immer noch etwas gegen globale Variablen geschrieben werden?

    Wenn ich die globalen Deklaration in main() verschiebe, passiert beim Kompilieren das hier:

    klima.c:11:21: warning: ‘struct Klimadatensatz’ declared inside parameter list
     void display(struct Klimadatensatz*);
                         ^
    klima.c:11:21: warning: its scope is only this definition or declaration, which is probably not what you want
    klima.c:12:27: warning: ‘struct Klimadatensatz’ declared inside parameter list
     void displayaslist(struct Klimadatensatz*);
                               ^
    klima.c: In function ‘main’:
    klima.c:59:12: warning: passing argument 1 of ‘display’ from incompatible pointer type
        display(&Eintrag);
                ^
    klima.c:11:6: note: expected ‘struct Klimadatensatz *’ but argument is of type ‘struct Klimadatensatz *’
     void display(struct Klimadatensatz*);
          ^
    klima.c:76:49: warning: passing argument 3 of ‘input’ from incompatible pointer type
             input(Eintrag.temperatur, "Temperatur", monate);
                                                     ^
    klima.c:10:6: note: expected ‘const char **’ but argument is of type ‘char (*)[10]’
     void input(float*, const char*, const char**);
          ^
    klima.c:77:53: warning: passing argument 3 of ‘input’ from incompatible pointer type
             input(Eintrag.niederschlag, "Niederschlag", monate);
                                                         ^
    klima.c:10:6: note: expected ‘const char **’ but argument is of type ‘char (*)[10]’
     void input(float*, const char*, const char**);
          ^
    klima.c: At top level:
    klima.c:108:21: warning: ‘struct Klimadatensatz’ declared inside parameter list
     void display(struct Klimadatensatz *Eintrag)
                         ^
    klima.c:108:6: error: conflicting types for ‘display’
     void display(struct Klimadatensatz *Eintrag)
          ^
    klima.c:11:6: note: previous declaration of ‘display’ was here
     void display(struct Klimadatensatz*);
          ^
    klima.c: In function ‘display’:
    klima.c:112:34: error: dereferencing pointer to incomplete type
       printf("\nStation: %s", Eintrag->station);
                                      ^
    klima.c:113:33: error: dereferencing pointer to incomplete type
       printf("\nBreite: %s", Eintrag->latitude);
                                     ^
    klima.c:114:33: error: dereferencing pointer to incomplete type
       printf("\nLänge: %s", Eintrag->longitude);
                                     ^
    klima.c:116:14: error: dereferencing pointer to incomplete type
       if (Eintrag->cperiod_first == 0 || Eintrag->cperiod_last == 0)
                  ^
    klima.c:116:45: error: dereferencing pointer to incomplete type
       if (Eintrag->cperiod_first == 0 || Eintrag->cperiod_last == 0)
                                                 ^
    klima.c:119:30: error: dereferencing pointer to incomplete type
         printf("%d-%d\n", Eintrag->cperiod_first, Eintrag->cperiod_last);
                                  ^
    klima.c:119:54: error: dereferencing pointer to incomplete type
         printf("%d-%d\n", Eintrag->cperiod_first, Eintrag->cperiod_last);
                                                          ^
    klima.c:121:49: error: ‘monate’ undeclared (first use in this function)
         printf("\nTemperaturmittel für %s: %2.1f", monate[i], Eintrag->temperatur[i]);
                                                     ^
    klima.c:121:49: note: each undeclared identifier is reported only once for each function it appears in
    klima.c:121:67: error: dereferencing pointer to incomplete type
         printf("\nTemperaturmittel für %s: %2.1f", monate[i], Eintrag->temperatur[i]);
                                                                       ^
    klima.c:124:70: error: dereferencing pointer to incomplete type
         printf("\nNiederschlagsmittel für %s: %2.1f", monate[i], Eintrag->niederschlag[i]);
                                                                          ^
    klima.c:126:53: error: dereferencing pointer to incomplete type
       printf("\nJahres-Temperaturmittel: %2.1f", Eintrag->tempmittel);
                                                         ^
    klima.c:127:57: error: dereferencing pointer to incomplete type
       printf("\nJahres-Niederschlagssumme: %2.1f\n", Eintrag->niedsumme);
                                                             ^
    klima.c:128:64: error: dereferencing pointer to incomplete type
       printf("\nKlimaformel nach Köppen und Geiger: %s\n", Eintrag->formula);
                                                                    ^
    klima.c:129:35: error: dereferencing pointer to incomplete type
       printf("\nQuelle: %s\n", Eintrag->quelle);
                                       ^
    klima.c: In function ‘koeppen_geiger’:
    klima.c:138:22: error: ‘Eintrag’ undeclared (first use in this function)
       float highest_temp=Eintrag.temperatur[0];
                          ^
    klima.c: In function ‘schreibe’:
    klima.c:369:15: error: ‘Eintrag’ undeclared (first use in this function)
       if (fwrite(&Eintrag, sizeof(Eintrag), 1, fp) < 1)
                   ^
    klima.c: In function ‘lese’:
    klima.c:404:17: error: ‘Eintrag’ undeclared (first use in this function)
       while (fread(&Eintrag, sizeof(Eintrag), 1, fp) == 1 && fp)
                     ^
    klima.c: In function ‘showall’:
    klima.c:452:17: error: ‘Eintrag’ undeclared (first use in this function)
       while (fread(&Eintrag, sizeof(Eintrag), 1, fp) == 1 && fp)
                     ^
    klima.c: At top level:
    klima.c:461:27: warning: ‘struct Klimadatensatz’ declared inside parameter list
     void displayaslist(struct Klimadatensatz* Eintrag)
                               ^
    klima.c:461:6: error: conflicting types for ‘displayaslist’
     void displayaslist(struct Klimadatensatz* Eintrag)
          ^
    klima.c:12:6: note: previous declaration of ‘displayaslist’ was here
     void displayaslist(struct Klimadatensatz*);
          ^
    klima.c: In function ‘displayaslist’:
    klima.c:463:29: error: dereferencing pointer to incomplete type
       printf("%s|%s|%s|",Eintrag->station, Eintrag->latitude, Eintrag->longitude);
                                 ^
    klima.c:463:47: error: dereferencing pointer to incomplete type
       printf("%s|%s|%s|",Eintrag->station, Eintrag->latitude, Eintrag->longitude);
                                                   ^
    klima.c:463:66: error: dereferencing pointer to incomplete type
       printf("%s|%s|%s|",Eintrag->station, Eintrag->latitude, Eintrag->longitude);
                                                                      ^
    klima.c:464:14: error: dereferencing pointer to incomplete type
       if (Eintrag->cperiod_first == 0 || Eintrag->cperiod_last == 0)
                  ^
    klima.c:464:45: error: dereferencing pointer to incomplete type
       if (Eintrag->cperiod_first == 0 || Eintrag->cperiod_last == 0)
                                                 ^
    klima.c:467:28: error: dereferencing pointer to incomplete type
         printf("%d-%d", Eintrag->cperiod_first, Eintrag->cperiod_last);
                                ^
    klima.c:467:52: error: dereferencing pointer to incomplete type
         printf("%d-%d", Eintrag->cperiod_first, Eintrag->cperiod_last);
                                                        ^
    klima.c:468:185: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                             ^
    klima.c:468:209: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                     ^
    klima.c:468:233: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                             ^
    klima.c:468:257: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                     ^
    klima.c:468:281: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                             ^
    klima.c:468:305: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                     ^
    klima.c:468:329: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                             ^
    klima.c:468:353: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                     ^
    klima.c:468:377: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                             ^
    klima.c:468:401: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                     ^
    klima.c:468:425: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                             ^
    klima.c:468:450: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ^
    klima.c:468:475: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ^
    klima.c:468:501: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ^
    klima.c:468:527: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ^
    klima.c:468:553: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ^
    klima.c:468:579: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ^
    klima.c:468:605: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ^
    klima.c:468:631: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ^
    klima.c:468:657: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ^
    klima.c:468:683: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ^
    klima.c:468:709: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ^
    klima.c:468:735: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ^
    klima.c:468:762: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ^
    klima.c:468:789: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ^
    klima.c:468:810: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ^
    klima.c:468:830: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ^
    klima.c:468:848: error: dereferencing pointer to incomplete type
       printf("|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%2.1f|%s|%s\n", Eintrag->temperatur[0], Eintrag->temperatur[1], Eintrag->temperatur[2], Eintrag->temperatur[3], Eintrag->temperatur[4], Eintrag->temperatur[5], Eintrag->temperatur[6], Eintrag->temperatur[7], Eintrag->temperatur[8], Eintrag->temperatur[9], Eintrag->temperatur[10], Eintrag->temperatur[11], Eintrag->niederschlag[0], Eintrag->niederschlag[1], Eintrag->niederschlag[2], Eintrag->niederschlag[3], Eintrag->niederschlag[4], Eintrag->niederschlag[5], Eintrag->niederschlag[6], Eintrag->niederschlag[7], Eintrag->niederschlag[8], Eintrag->niederschlag[9], Eintrag->niederschlag[10], Eintrag->niederschlag[11], Eintrag->tempmittel, Eintrag->niedsumme, Eintrag->formula, Eintrag->quelle);
    
    

    Wirklich lecker...

    Bis bald im Khyberspace!

    Yadgar



  • @yadgar sagte in Speicherzugriffsfehler bei strcmp():

    Leider erfährt man in den üblichen (auch Online-)Handbüchern nicht viel darüber...

    Dann lies eine Referenz zu scanf durch. Gibt es online, z.B.:
    http://www.cplusplus.com/reference/cstdio/scanf/

    Ohne getchar() werden etliche Ausgaben einfach übersprungen...

    Lies dazu, was über Whitespace character in dem Link steht.
    Dir muss klar sein, wann welche Zeichen aus dem Eingabestrom gelesen werden.
    scanf stellt Zeichen, die nicht zum Formatspecifier passen wieder zurück.

    Und wer erklärt mir, wie ich das mache?

    Lesen, nachdenken und eigene Schlüsse ziehen.
    (Das allgemeine Vorgehen eines Programmierers)

    Wenn ich die globalen Deklaration in main() verschiebe, passiert beim Kompilieren das hier:

    Das ist ja auch eine Definition der struct-Variable Eingabe
    Trenne die Typdefinition der struct von der Definition der Variable.

    struct Klimadatensatz // hier wird eine struct mit Namen Klimadatensatz bekannt gemacht
    {
      char* station;
      char cperiod[10];
      char latitude[11];
      char longitude[12];
      float temperatur[DIM];
      float niederschlag[DIM];
      char formula[4];
    };
    ....
    int main ()  {
      struct Klimadatensatz Eingabe; // Definiotion der Variable Eingabe vom Typ struct Klimadatensatz
    


  • This post is deleted!

Log in to reply