C anfänger frage

Gast #40610
Lesenswert?
• ▲
▼
hallo zusammen,

wenn ich mir im sram ein array reserviere z.b:

char array[10];

und ich das ganze mit einem string füllen will
kenne ich nur eine komplizierte art dies zu tun:

array[0] = 'H';
array[1] = 'a';
array[2] = 'l';
array[3] = 'l';
array[4] = 'o';

gibt es keine variante dies einfacher ist?
Gast #40612
Lesenswert?
• ▲
▼
Von Anfänger zu Anfänger :>
char array[]="Hallo";
siehe: http://os.inf.tu-dresden.de/%7Ejn4/ckurs/c-kurs0.htm#0_effektiv
Kapitel 3


Grad zu dem Thema hätte ich auch eine Frage:
Wenn ich ein Feld gleich mit Variablen initialisiere, dann schreibt
AVRstudio 4 bei der Simulation im Watch Fenster anstelle meiner
Variablen nur "irgendwelche" Zahlen in das Feld, siehe Anhang. Was
kann ich da falsch gemacht haben?


Danke und Gruß
Zoltan
Angehängte Dateien:
Admin Persönliche Seite #40613
Lesenswert?
• ▲
▼
char array[8]={'H','a','l','l','o'};

geht nur bei der Initialisierung der Variable (und ist kein String,
weil die abschließende 0 fehlt). Um zur Laufzeit einen String in das
Array zu kopieren gibt es die Funktionen strcpy und strncpy.

Beispiel:
  strcpy(array, "Hallo");

Bei strncpy kann man die Anzahl n der zu kopierenden Bytes angeben. Das
macht z.B. Sinn wenn man einen String unbekannter Länge hat, den man in
ein Array mit begrenzter Länge kopieren will. Allerdings wird der
String nicht automatisch terminiert, deshalb muss man "von Hand" eine
Null anfügen:
  strcpy(array, string, 7);  // 7 bytes von string nach array kopieren
  array[7] = '\0';           // das 8. Byte in array auf 0 setzen
Gast #40616
Lesenswert?
• ▲
▼
Hi

Andreas hat es zwar schon mehr oder weniger geschrieben aber so
eindeutig geht es daraus nicht hervor:

char array[8]={'H','a','l','l','o'};
ist nicht identisch mit
char array[8]="Hallo";
da im zweiten Fall noch das den String terminierende Zeichen '\0'
angefügt wird.

Matthias

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren