"struct" - Objekte, die mit "for-Schleife" in der C-Programmierung

Dieser code wird zu 'struct' in C..

Erstellte ich ein struct spieler mit den Eigenschaften name und Alter..
Mithilfe der for-Schleife lasse ich dem Benutzer das erstellen der struct-Objekte.
Sie sind benannt als sp[i] --> sp1, sp2 etc.

das problem ist, die Objekte erstellt werden. Aber ich kann Sie nur innerhalb der for-Schleife.
Wenn ich will, um den Wert "sp1.Namen" in die main Funktion, funktioniert es nicht.
Wie kann ich es lösen?

struct spieler{
  char name[20];
  int age;
};

void erzeuge();

int main() {

int anzahl = 2;
printf("Anzahl Spielern: ");
scanf("%d",&anzahl);

erzeuge(anzahl);

printf("Es sind %d Spielern",anzahl);
/*for(i;i<anzahl;i++){
    printf("%d.%s",i, sp[i].name);
}*/

getchar();

}

void erzeuge(int anzahl){

int i=0;
for(i;i<anzahl;i++){
    struct spieler sp[i];
    printf("Struct fuer Spieler_%d wurde erzeugt\n", i);
    getchar();
    printf("Name: ");
    scanf("%s",sp[i].name);

    printf("%s\n",sp[i].name);
}

  • Sie können nicht alles tun, wie diese.
  • Du brauchst eine Globale variable/array-Zugriff in den Haupt-und anderen Funktionen. Hier erstellen Sie einfach eine lokale variable. Und ich persönlich verstehe nicht, was Sie eigentlich bedeutet Online struct spieler sp[i] - es sieht aus wie Unsinn zu mir. Geht das auch kompilieren? 😯
  • struct spieler sp[i]; deklariert ein array von struct spielers, dass ist i Elemente lange [0,i-1], und sp[i].name greift auf element i es ist ein Fehler.
  • In C99 ist es deklariert eine lokale variable Länge array von i struct spielers. Es kompiliert, aber das array verschwindet bei der nächsten iteration der Schleife.
  • Danke, Daniel, +1. So ist es ziemlich lokalen array. Und es ist zu kurz. dmckee +1
InformationsquelleAutor kk-dev11 | 2011-12-09
Schreibe einen Kommentar