Forum: Compiler & IDEs C anfänger frage


von Marcel (Gast)


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?

von Marko (Gast)


Lesenswert?

char array[8]={'H','a','l','l','o'};



Gruß
Marko

von Zoltan Gradwohl (Gast)


Angehängte Dateien:

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

von Andreas S. (andreas) (Admin) Benutzerseite


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

von Peter Fleury (Gast)


Lesenswert?

Initialisierte globale Variablen werden in AVRStudio nicht korrekt
angezeigt. Siehe WinAVR (AVR COFF) readme file, Abschnitt "known
issues".

von Zoltan Gradwohl (Gast)


Lesenswert?

Ok, habs gefunden. Danke

von Matthias (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.