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 Ordner

    und 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


Anmelden zum Antworten