Zeichenkettenstrings in Strukturen. in C

Hallo, ich habe vor ein paar Wochen angefangen C zu lernen. Ich habe Kenntnisse in
Java, lerne aber nun in der schule C. Ich habe mir ausserdem ein „Wiki-Book“
Ausgedruckt und weiter Tutorials durchgelesen. Also bin ich in Sachen Theorie
schon recht weit. Nur bringt Theorie nichts wenn mann letztendlich es nicht
umsetzen kann .

Nun mein Problem ist eigentlich das ich Felder eines Arrays bestimmte Werte
zuweisen möchte.
Zb. die Anzahl der Zimmer und Name des Gasthofes.
Ich habe es mir in etwas so vorgestellt:

____________________________________________________________________________

#include

struct Info {
char name[30];
int zimmer;
}hotel[5];

int main(int argc, char *argv[])
{
hotel[1].name=„Rosengarten“;
hotel[1].zimmer=2;
printf(„Im Hotel %s stehen %i Zimmer zu
Verfügung.“,hotel[1].name,hotel[1].zimmer);
}
____________________________________________________________________________

Vielleicht kann mir jemand helfen.
Ich bin noch auf folgende Lösung gestossen:

____________________________________________________________________________
#include

#include

struct Info {
char name[30];

}Hotel[5];

int main(int argc, char *argv[])
{

strcpy(Hotel[1].name, „1234567“);
printf("%s",Hotel[1].name);
}
____________________________________________________________________________

Gibt es noch eine andere Lösung?

mit freundlichen Grüßen

Felix

Hallo Felix,

um bei deinem Beispiel zu bleiben:
über hotel[1].name greifst du auf das CharArray name zum. Um das Wort „Rosengarten“ darin zu speichern müsstest du schreiben: name[0]=‚R‘; name[1]= ‚o‘; … name[10] = ‚n‘; name[11] = ‚\0‘;

Sieht umständlich aus und ist es auch, Eleganter kann man das lösen wenn man das in eine Schleife packt die die bytes einzeln von a nach b kopiert.
Und das macht strcpy(Hotel[1].name, „1234567“);

Eine Zuweisung mit = wie in Java gibt es nicht in C (Genau genommen ist in Java und C# String auch eine Klasse bei der der Operator = überladen ist. Intern passiert da das gleiche)

/* Anmerkung:
Wenn du schreibst: char myString[] = „Rosengarten“;
wird das Array mit diesem wert initalisiert
*/

Danke für die schnelle Antwort :smile:
dan verwende ich wohl
strcpy(Hotel[1].name, „1234567“);
ist wirklich eleganter…

Mit freundlichen grüssen
Felix

Hallo Felix,

bin leider inicht mehr in dem Bereich aktiv.

Sorry

PS: Sieht aber ok aus, was du da gefunden hast :wink:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]