Einfaches Structur-Beispiel



  • Hi! Ich habe eine Frage zu folgendem Code.

    Wieso ist die Ausgabe immer die gleiche, egal ob ich den Code der "Variante 1" vor oder hinter "Variante 2 kopiere"?

    So wie im Beispiel unten ist "Variante 1" im Array an Position 0, aber wenn ich ich es "unter" "Variante 2" kopiere müsste es doch an Array Pos. 1 stehen und danach ausgegeben werden... oder?

    Ich hoffe mich verständlich ausgedrückt zu haben 😉 ...

    DANKE schon jetzt für eure Mühe!!!

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    //Prototyp der Struktur, reserviert/benötigt also noch KEINEN Speicherplatz
    struct datensatz {
    	char name[20];
    	char vorname[10];
    	int steuerklasse;
    };
    
    int main(void) {
    	struct datensatz person, personal[30];
    	int i;
    
    	//1. Variante: Inhalt in Struktur einfügen
    	strcpy(person.name, "Walker");
    	strcpy(person.vorname, "Johnny");
    	person.steuerklasse = 3;
    
    	//2. Variante: Inhalt in Struktur-Array einlesen
    	printf("Bitte Personendaten eingeben: \n\n");
    	printf("Name = ");
    	gets(personal[1].name);
    	printf("Vorname = ");
    	gets(personal[1].vorname);
    	printf("Steuerklasse = ");
    	scanf("%i", &personal[1].steuerklasse);
    
    	//Kopiert in einer Einweisung den kompletten Inhalt der Strukturvariable Person
    	//OHNE diese Zuweisung fehlt die Zuweisung aus "Variante 1".
    	personal[0] = person;
    
    	for (i = 0; i <= 1; i++) {
    		printf("%s\n", personal[i].name);
    		printf("%s\n", personal[i].vorname);
    		printf("%i\n", personal[i].steuerklasse);
    		printf("\n");
    	}
    
    	return 0;
    }
    

    Ausgabe:

    Bitte Personendaten eingeben: 
    
    Name = aaf
    Vorname = afas
    Steuerklasse = 34
    Walker
    Johnny
    3
    
    aaf
    afas
    34
    


  • cStarter12 schrieb:

    Ich hoffe mich verständlich ausgedrückt zu haben 😉 ...

    Äh ......, nein.

    An welcher Position die Daten im Array stehen, bestimmst du mit dem Index und nicht mit der Position im Quelltext.

    Wenn du z.B. gets(personal[0].name); (auch beim vornamen) und noch personal[1] = person; machst, hast du eine andere Reihenfolge.


Log in to reply