Problem bei struct array mit Integer-Werten



  • Habe das Problem, dass wenn ich die Eingabe abgschlossen habe und diese dann dann wieder ausgeben lassen möchte, zeigt er mir folgende Werte an:
    Tag:4210800
    Monat4210920
    Jahr:4211040
    etc.
    Warum? Habe ich einen Fehler mit der Initialisierung der Datentypen gemacht?

    Danke im Vorraus...

    Hier der Code:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define MAX 30
    static int x = 0;
    struct datum {
       int tag[MAX];
       int monat[MAX];
       int jahr [MAX];
       int windstaerke[MAX];
       int regendauer [MAX];
       int temp [MAX];
       int sonnenscheindauer [MAX];
    } daten[100];
    
    void Eingabe(int nr, struct datum neu[]) {
       printf("Tag : ");
       do {
          scanf("%2ld",&neu[nr].tag);
       } while(getchar()!= '\n');
       printf("Monat : ");
       do {
          scanf("%2ld",&neu[nr].monat);
       } while(getchar()!= '\n');
       printf("Jahr : ");
      do {
          scanf("%4ld",&neu[nr].jahr);
       } while(getchar()!= '\n');
       printf("Windstaerke : ");
      do {
          scanf("%2ld",&neu[nr].windstaerke);
       } while(getchar()!= '\n');
       printf("Regendauer : ");
       do {
          scanf("%2ld",&neu[nr].regendauer);
       } while(getchar()!= '\n');
       printf("Temperatur : ");
      do {
          scanf("%2ld",&neu[nr].temp);
       } while(getchar()!= '\n');
       printf("Sonnenscheindauer : ");
       do {
          scanf("%2ld",&neu[nr].sonnenscheindauer);
       } while(getchar()!= '\n');
    
    }
    
    void Ausgabe(struct datum all[],int nr) {
       int i;
       for(i = 0; i < nr; i++) {
          printf("Tag.........:%2ld\n",all[i].tag);
          printf("Monat........:%2ld\n",all[i].monat);
          printf("Jahr....:%4ld\n",all[i].jahr);
          printf("Windstaerke.............:%d\n",all[i].windstaerke);
          printf("Regendauer.....:%d\n",all[i].regendauer);
          printf("Temperatur.....:%d\n",all[i].temp);
          printf("Sonnenscheindauer.....:%d\n",all[i].sonnenscheindauer);
          if((!(i%2))&& i!=0) {
             printf("\n\tWeiter mit <Enter>\n\n");
             getchar();
          }
       }
    }
    
    int main(void) {
       int auswahl;
    
       do {
          printf("-1- Datum und Wetterdaten eingeben\n");
          printf("-2- Wetterbericht ausgeben\n");
          printf("-3- Alle Daten ausgeben\n");
          printf("-4- Programm beenden\n");
          printf("\nIhre Auswahl : ");
          scanf("%d",&auswahl);
    
          getchar();
          switch(auswahl) {
             case 1 : Eingabe(x++,daten);
                      break;
    
             case 3 : Ausgabe(daten,x);
                      break;
    
             case 4 : printf("Ende....\n");
                      break;
             default: printf("Falsche Eingabe\n");
          }
       }while(auswahl <4);
       return EXIT_SUCCESS;
    }
    


  • #include <stdio.h> 
    #include <string.h> 
    #include <stdlib.h> 
    #define MAX 30 
    static int x = 0; 
    struct datum { 
       int tag[MAX]; 
       int monat[MAX]; 
       int jahr [MAX]; 
       int windstaerke[MAX]; 
       int regendauer [MAX]; 
       int temp [MAX]; 
       int sonnenscheindauer [MAX]; 
    } daten[100]; 
    
    void Eingabe(int nr, struct datum neu[]) { 
       printf("Tag : "); 
       do { 
          scanf("%2ld",&neu[nr].tag); 
       } while(getchar()!= '\n'); 
       printf("Monat : "); 
       do { 
          scanf("%2ld",&neu[nr].monat); 
       } while(getchar()!= '\n'); 
       printf("Jahr : "); 
      do { 
          scanf("%4ld",&neu[nr].jahr); 
       } while(getchar()!= '\n'); 
       printf("Windstaerke : "); 
      do { 
          scanf("%2ld",&neu[nr].windstaerke); 
       } while(getchar()!= '\n'); 
       printf("Regendauer : "); 
       do { 
          scanf("%2ld",&neu[nr].regendauer); 
       } while(getchar()!= '\n'); 
       printf("Temperatur : "); 
      do { 
          scanf("%2ld",&neu[nr].temp); 
       } while(getchar()!= '\n'); 
       printf("Sonnenscheindauer : "); 
       do { 
          scanf("%2ld",&neu[nr].sonnenscheindauer); 
       } while(getchar()!= '\n'); 
    
    } 
    
    void Ausgabe(struct datum all[],int nr) { 
       int i; 
       for(i = 0; i < nr; i++) { 
          printf("Tag.........:%2ld\n",all[i].tag); 
          printf("Monat........:%2ld\n",all[i].monat); 
          printf("Jahr....:%4ld\n",all[i].jahr); 
          printf("Windstaerke.............:%d\n",all[i].windstaerke); 
          printf("Regendauer.....:%d\n",all[i].regendauer); 
          printf("Temperatur.....:%d\n",all[i].temp); 
          printf("Sonnenscheindauer.....:%d\n",all[i].sonnenscheindauer); 
          if((!(i%2))&& i!=0) { 
             printf("\n\tWeiter mit <Enter>\n\n"); 
             getchar(); 
          } 
       } 
    } 
    
    int main(void) { 
       int auswahl; 
    
       do { 
          printf("-1- Datum und Wetterdaten eingeben\n"); 
          printf("-2- Wetterbericht ausgeben\n"); 
          printf("-3- Alle Daten ausgeben\n"); 
          printf("-4- Programm beenden\n"); 
          printf("\nIhre Auswahl : "); 
          scanf("%d",&auswahl); 
    
          getchar(); 
          switch(auswahl) { 
             case 1 : Eingabe(x++,daten); 
                      break; 
    
             case 3 : Ausgabe(daten,x); 
                      break; 
    
             case 4 : printf("Ende....\n"); 
                      break; 
             default: printf("Falsche Eingabe\n"); 
          } 
       }while(auswahl <4); 
       return EXIT_SUCCESS; 
    }
    

    ist gleich viel lesbarer mit den C/C++ Code-Tags - meinst du nicht?

    Willst du C oder C++ programmieren? schaut so aus, als ob dein Thread besser im C Unterforum aufgehoben wäre...

    bb



  • ja ok du hast recht, bin neu hier, sorry

    Ja ich wollte C programmieren!!!



  • oder mach ihn dort noch mal neu auf und nimm gleich C/C++ Tags und schreib "voraus" statt "vorraus"

    gl : >



  • Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten