schiesse wild mit Pointer in strukturen rum.
-
Ich habe ein keines Problem.
Ich habe eine Text-Datei in folgender Inhalt steht:
10 0.45 Disketten
1 3.45 Locher
13 4.95 Papier
5 2.99 Ordnerund ich soll diesen Inhalt einlesen und dann den gesamtwert berechnen, nur irgendwo in der DateiEinlesen-Funktion geht was verloren. Ich bekomme werte, die keinen sinn machen.
#include <stdio.h> typedef struct Lagerliste { char Artbezeichnung[25]; int bestand; double wert; }Lager; int DateiEinlesen(char *FName, Lager *lager); double Lagerbestand(Lager *lager); int main() { Lager hauptlager[20]; int i=0; int x; char *FName="lager.txt"; double summe; while(1){ printf("Bitte eine Funktion auswaehlen: "); printf("\n1.Daten aus einer Datei auslesen."); printf("\n2.Den Wert des Lagers berechnen\n"); printf("3.Das Programm beenden!\n"); scanf("%d",&x); switch(x) { case 1: DateiEinlesen(FName, hauptlager); break; case 2: summe=Lagerbestand(hauptlager); printf("Der Wert des Lagers betraegt:%f\n",summe); break; case 3: return 0; default: printf("Sie haben eine falsche Eingabe getroffen!"); }} system("PAUSE"); } int DateiEinlesen(char *FName, Lager *lager) { FILE *fp; fp = fopen(FName, "r"); int i=0; printf("Daten werden eingelesen...\n"); while(fscanf(fp,"%d\t%f\t%s",&lager[i].bestand,&lager[i].wert,lager[i].Artbezeichnung)!=EOF) { printf("%d %f %s",lager[i].bestand,lager[i].wert,lager[i].Artbezeichnung); i++; } fclose(fp); printf("\nDaten eingelesen!\n"); } double Lagerbestand(Lager *lager) { int i=0; double summe=0.0; for(;i<4;i++) { summe +=lager[i].wert*lager[i].bestand; } return summe; }
Ich danke jetzt schon
-
%f erwartet einen Zeiger auf float. Für double brauchst du %lf.
-
danke manche fehler können so leicht gelöst werden