Problem mit strukturoperator



  • Hi
    ich hab folgendes Problem:

    #include <stdio.h>
    
    struct a{int x;
    		 char b[20];} y[10];
    
    lala(struct a * y){
    	scanf("%s",y[7]->b);
    }
    
    main(){
    	lala(&y);
    }
    

    Vielleicht könnt ihr mir sagen warum die scanf-Zeile falsch ist.
    Ich komm einfach nicht drauf ich hab alles ausprobiert.
    thx 🙂



  • Du definierst ein Array von 10 Strukturen.

    Die Funktion erwartet einen Pointer auf eine Struktur a oder eben ein Array von a.
    Also musst du auch so etwas übergeben (ohne &).

    Weiterhin dereferenzierst du in lala durch y[7] ja schon deinen Pointer(bzw. Array) also benötigst du nicht -> sonder .

    void lala(struct a *y)
    { 
      scanf("%s",y[7].b); 
    } 
    
    int main()
    { 
      lala(y); 
    }
    


  • #include <stdio.h>
    
    struct a {
      int x;
      char b[20];
    } y[10];
    
    lala(struct a *y)
    {
        scanf("%s",y[7].b);
    }
    
    o
    
    lala(struct a *y)
    {
        scanf("%s",(y+7)->b);
    }
    


  • @Seppschrot

    mir geht es ja ums prinzip wie ich sowas mache die 7 war nur nen beispiel ausserdem will ich die struktur verändern also by referenceund nicht nur die kopie (by value).

    @leo aka qsch

    wenn das auch so funktioniert wozu braucht man dann überhaupt nen strukturoperator?



  • mxpower schrieb:

    @Seppschrot
    mir geht es ja ums prinzip wie ich sowas mache die 7 war nur nen beispiel ausserdem will ich die struktur verändern also by referenceund nicht nur die kopie (by value).

    Arrays werden automatisch als Adresse übergeben.
    Probier´s aus.


Anmelden zum Antworten