"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 vonstruct spieler
s, dass isti
Elemente lange [0,i-1], undsp[i].name
greift auf elementi
es ist ein Fehler.- In C99 ist es deklariert eine lokale variable Länge array von
i
struct spieler
s. 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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie erklären
sp
als Zeiger auf globalen Bereich, und reservieren Sie Speicher für die es innerhalb der Funktionerzeuge
mitmalloc
.sp
mit insgesamti
Elemente, was bedeutet, dass die Indizes reichen von0
zui-1
. Mithilfe dieser Linie, weder können Sie den Zugriffsp
von außerhalb der Schleife und vonmain()
- Funktion noch kann man bedenkenlos zugreifensp[i]
.Müsstest du ein array zurückgeben, der Spieler aus
erzeuge
so etwas wieAlternative Lösung ohne
malloc
: