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.