Struktur übergeben



  • Hi, folgendes:

    #include <stdio.h>
    
      struct Bank{
    	char cName[50];
    	int iSd;
    	double dSp, dZs;
    } ;
    
    main()
    {
    struct Bank sBank;
    Eingabe(sBank);}
    
    Eingabe(struct sBank x)
    {
        printf("Banknamen eingeben: ");
        fgets(x.cName, 50, stdin);
        printf("Sparrate eingeben: ");
        fgets(x.dSp, 1, stdin);
        printf("Zinssatz eingeben: ");
        fgets(x.dZs, 1, stdin);
        printf("Spardauer in Jahren eingeben: ");
        fgets(x.iSd, 1, stdin);
    
    }
    

    Dann kommt der Fehler
    D:\Eigene Dateien\P\Struktur2.c(56) : error C2079: 'x' verwendet undefiniertes struct 'sBank'

    Was ist da falsch? DIe Übergabe ja, aber was genau? Find das ni.. Ich könnts auch global machn, aber das ist ja nicht allzu schön 😛

    Dachte, die Suche würde ein Beispiel liefern, aber die wurde ja so dumm gemacht, dass man da garnix mehr richtig findet..



  • du musst einen pointer auf das struct übergeben und dann statt x.irgendwas x->irgendwas schreiben.

    außerdem liest fgets() nur in char* ein. du brauchst scanf()



  • WIe meinst das genau? Hab jetzt

    Eingabe(struct *sBank x)
    {
        printf("Banknamen eingeben: ");
        fgets(x->cName, 50, stdin);
        printf("Sparrate eingeben: ");
        scanf("%s", &x->dSp);
        printf("Zinssatz eingeben: ");
        scanf("%s", &x->dZs);
        printf("Spardauer in Jahren eingeben: ");
        scanf("%s", &x->iSd);
    
    }
    
    main()
    {
        struct Bank *sBank;
        Eingabe(*sBank);
    }
    

    Aber da meckert er immer noch, wieso? Da is irgendwo was vergessn von mir....
    D:\Eigene Dateien\P\Struktur2.c(51) : error C2146: Syntaxfehler : Fehlendes ')' vor Bezeichner 'x'
    D:\Eigene Dateien\P\Struktur2.c(51) : error C2061: Syntaxfehler : Bezeichner 'x'



  • Habs hinbekommen, hatte was übersehen *g*
    trotzdem thx!



  • guck dir an, was scanf() als formatstring akzeptiert. %s passt nur beim ersten und da auch nur, wenn der string keine leerzeichen enthält. (-> fgets())
    das wirst du doch wohl noch schaffen?

    in der main(): struct Bank sBank; da darf kein * sein

    dann muss es int main() und void Eingabe(... heißen.
    dein visual c++ ist nicht grad gut zum einsteigen...

    achja, per ICQ möchte ich sowas nicht beantworten. also in zukunft bitte nur im board.



  • So, hat nun alles geklappt, großen Dank an c.rackwitz, dass er meine Fragen aushielt.


Log in to reply