Links von ".key" muss sich eine Klasse/Struktur/Union befinden.



  • Hi!

    Das folgende Programm soll mithilfe eines structs Nutzernamen, Passwort und Status eines Accounts über Eingabe speichern und zur Kontrolle nochmal ausgeben.
    Leider erhalte ich die Fehlermeldung:

    Fehler 6 error C2228: Links von ".key" muss sich eine Klasse/Struktur/Union befinden.

    #include <stdio.h>
    
    int main(){
    	struct acc{
    		char user[30];
    		char key[20];
    		int status;
    	};
    
    	printf("Geben Sie ihren Benuternamen ein: \n");
    	scanf("%s",&acc.user);
    	printf("Geben Sie ihr Passwort ein: \n");
    	scanf("%s",&acc.key);
    	printf("Geben Sie den Accountstatus ein (0 oder 1) ein: \n");
    	scanf("i",&acc.status);
    	printf("%s \t %s \t %i",acc.user,acc.key,acc.status);
    
    	getchar();
    	getchar();
    	return 0;
    	}
    

  • Mod

    Du hast nirgendwo eine Instanz deines structs angelegt. struct acc ist der Name deines structs, wenn du da drauf den Punkt-Operator oder den Adressoperator anwendest, dann ist das in etwa so sinnvoll wie int.irgendwas oder &int . Du musst eine Variable vom Typ struct act anlegen, dann kannst du mit dieser arbeiten, wie du es hier vor hast.

    Weiterhin gehört in C das "struct" zum Namen dazu. Wenn der Compiler nur "acc" als Typbezeichner akzeptiert, dann benutzt du einen C++-Compiler. Tu das nicht. Die übliche Abhilfe gegen lange Schreiborgien ist ein passender Typedef:

    typedef struct{
            char user[30];
            char key[20];
            int status;
        } acc;
    

    Dein ganzer Code kann übrigens auch mit einer subtilen Änderung lauffähig gemacht werden:

    struct {
      char user[30];
      char key[20];
      int status;
    } acc;
    

    Mit deinem Wissen über struct-Deklarationen und Variablendefinitionen: Was bedeutet dies und warum funktioniert das?


Anmelden zum Antworten