liste anlegen
-
hallo zusammen
Ich habe folgendes Problem ich eine Buecherliste anlegen lassen. Doch bekomme ich nach direkter Abfrage zwar den "titel raus" aber die inventarnummer und der preis sind falsch...
Könnte das daran liegen das ich die variablen nicht initialsiert habe ?
Also ich habs probiert die zu initialisiern und somit den Verdacht ausszuschließen bekomm aber dann eine Fehler Meldung ... was mach ich falsch ?#include <stdio.h> #include <stdlib.h> typedef struct{ char titel[80]; int inventar; double preis,mwst; }buch; int main(){ int i,x; double mwst; buch buecher_liste[100]; printf("bitte geben sie die mehrwertsteuer ein\n"); scanf("%i", &(mwst)) ; for(i=0 ; i<= 100 ; i++) buecher_liste[i].mwst = mwst; printf("nun titel inventar nummer und preis des buches\n"); fflush(stdin); for (i=0; i<=100 ; i++){ scanf("%s %i %lf", &buecher_liste[i].titel , &buecher_liste[i].inventar, &buecher_liste[i].preis ); printf("%s %i %f", &(buecher_liste[i].titel) ,&buecher_liste[i].inventar,&buecher_liste[i].preis ); } system("pause"); return; }
-
ok ich kann schon die werte initialisiern aber es bringt nix ....
er zeigt mir statt dem preis und der inventarnummer immer noch das flasche an
-
Am besten du kompilierst dein Programm mal mit der der Option -Wall. Dadurch werden dir ein paar Warnungen angezeigt, welche dir weiterhelfen sollten.
-
printf braucht für Zahlen keine Zeiger und scanf für Zeiger kein &.
scanf ("%s %i %lf", buecher_liste[i].titel , &buecher_liste[i].inventar, &buecher_liste[i].preis ); printf("%s %i %f", buecher_liste[i].titel , buecher_liste[i].inventar, buecher_liste[i].preis ); // ^ ^ ^
-
Alles klar
-
Trotzdem ist keine so schlecht Idee, die strukturen alle zu initialisieren. Z.b. mit memset.
-
it0101_loggedoff schrieb:
Trotzdem ist keine so schlecht Idee, die strukturen alle zu initialisieren. Z.b. mit memset.
Warum? Wenn man keine sinnvollen Werte hat, bringt das doch genau 0, außer Laufzeitverschwendung. Und wenn man (wie es sich gehört) mit Warnungen compiliert, bekommt man keine Warnungen mehr wenn man die Werte uninitialisiert benutzt (denn ob uninitialisiert benutzen oder mit 0 initialisiert benutzen, beides ist fast immer ein Fehler).