C anfänger frage

Gast #40610
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.