Fehlermeldung bei C



  • Hallo,

    ich habe folgenden Quelltext bisher und da kommt immer die Fehlermeldung:
    two or more data types in declaration of <my function> , was bedeutet das?

    #include <stdio.h>
    
    struct benotung_s {
           char name[20];
           int punkte[5];
           }
    
    void eingeben(){
    
         struct benotung_s benotung;
    
         int i,punkte[i];
         char name[20];
    
         scanf("%s",&name);
         strcpy(benotung.name, name);
    
         for (i=0 ; i<=4; i++){
             scanf("&i",benotung.punkte[i]);
             }       
    }
    
    int main(){
        eingeben();
        system("pause");
    
        return 0;
    
    }
    

    Es sollen 5 Punktezahlen eingegeben werden, könnte ich dann punkte[i] nicht auch global deklarieren?

    detlef



  • scanf("&i",&benotung.punkte[i]);
    

    //Referenz



  • Da fehlt ein

    ;
    

    hinter dem struct;

    struct blubb {
        int a;
        int b;
    }; /* <-- hier */
    

    achja, und
    hier

    scanf("%d", &benoting.punkte[i])
    

    bedarf eines eines % - Zeichens, kein &.



  • okay, jetzt läuft es! Aber mal eine andere frage, wie würdet ihr die Aufgabe verstehen:

    Definieren sie sich einen Datenstrucktur benotung_s, der ein Namen und eine Punktanzahl zugeordent ist. Legen die eine globales array für max. 5 Benotungen an.
    Dann soll man noch den Punktespiegel ausgeben!

    Soll das so ein Prgramm sein, wie ich das begonnen habe, also ein Name und dann gibt man 5 Zahlen ein für die Benotung oder fünf Namen und fünf Noten?

    detlef



  • 5 Namen mit jeweils einer Note.



  • okay, jetzt sehe ich gerade noch, dass die main-Fkt so sein soll:

    void benotung_eingeben();

    float punktespiegel();

    int main(){

    printf("notenspiegel");
    benotung_eingeben();
    printf("notenspiegel:%.2f\n",punktespiegel());

    wobei in punktespiegel die Daten ausgegeben werden sollen!

    Was mich verwirrt, dass ich nicht weiss, was der Notenspiegel dann ausgeben soll, weil der Platzhalter ja ein float ist. Dann kann ja punktespiegel nicht die Namen + Note ausgeben?!?!?

    Benotung ist ja, dass ich eine Note jeder Person geben kann, aber was soll der notenspiegel?

    Versteht ihr mein Problem?



  • scanf("%s",&name); dort das & weglassen. Benutzt man nicht, wenn man "Strings" einließt.



  • Wo hast du C gelernt? Auf'n Flohmarkt? Ne woll eher gar nicht. 🙄



  • Dipl.Inf.Student schrieb:

    Wo hast du C gelernt? Auf'n Flohmarkt? Ne woll eher gar nicht. 🙄

    wo hast du deutsch gelernt? in der baumschule?



  • fricky schrieb:

    Dipl.Inf.Student schrieb:

    Wo hast du C gelernt? Auf'n Flohmarkt? Ne woll eher gar nicht. 🙄

    wo hast du deutsch gelernt? in der baumschule?

    lol bleib locker



  • Dipl.Inf.Student schrieb:

    lol bleib locker

    bin ich immer
    🙂



  • void benotung_eingeben(){

    struct benotung_s benotung;

    int i;
    char name[20];

    for (i=0 ; i<=4; i++){
    printf("Name");
    scanf("%s",&benotung.name[i]);
    printf("Note :");
    scanf("%i",&benotung.punkte[i]);
    }
    }

    ich habe das ja jetzt so und das läuft auch,aber wenn ich da das & bei scanf weglasse, geht es nicht mehr!?

    ich weiss jetzt nur nicht, was bei dem printf in der main ausgegeben werden soll?Notenspiegel?

    detlef



  • 01detlef schrieb:

    ich habe das ja jetzt so und das läuft auch,aber wenn ich da das & bei scanf weglasse, geht es nicht mehr!?

    Der Adressoperator & gehört dort auch hin, da scanf( ) die Adressen erwartet, die es mit Werten füllen soll.

    cheers, Swordfish



  • Wie bekomme ich das denn wieder ausgegeben in der printf-Fkt? Was soll da denn alles ausgegeben werden, weil da Notenspiegel steht!

    struct benotung_s benotung;      
    void benotung_eingeben(){
    
         int i;
         char name[20];
    
         for (i=0 ; i<=1; i++){
             printf("Name");
             scanf("%s",&benotung.name[i]);
             printf("Note :");
             scanf("%i",&benotung.punkte[i]);
             }       
    }
    float punktespiegel(){
    
         int x;
         for (x=0 ; x<=1; x++){
             printf("%s",benotung.name[x]);
    
             printf("%i",benotung.punkte[x]);
             } 
    
          }
    

Log in to reply