Forum: Compiler & IDEs Kurze Frage zu Array´s


von Mark F. (Gast)


Lesenswert?

Moin !

Was passiert wenn ich zwei mal hintereinander einen String in einen 
Array schreibe?

char TEST[256];

Ich schreibe erst POLIZEI und danach FEUERWEHR in das Array TEST.

Wie geht das Array damit um bzw. wie wird die Anordnung im Array sein?

So:
POLIZEIFEUERWEHR

oder wird POLIZEI überschrieben und da steht nur FEUERWEHR drin ?

Oder ist das noch abhängig welchen Befehl ich zum schreiben verwende ?

Mfg Mark

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

In der Regel wird überschrieben, es sei denn, Du verwendest strcat.

Einige Tips:

- Variablennamen NIE in Versalien (komplett in Großbuchstaben)
  schreiben.
  Das ist für Präprozessormacros (#defines) vorgesehen

- Besorge Dir das Buch "Programmieren in C" von Kernighan&Ritchie
  in der zweiten Auflage (Hanser-Verlag). Das erklärt die Grundlagen.

- Keine mir bekannte Sprache schreibt die Pluralform eines Wortes
  durch Anhängen eines Apostroph-S oder (wie in Deinem Fall) gar
  Akzent-S. Der Plural von Array lautet Arrays. Einfach so.

von Karl H. (kbuchegg)


Lesenswert?

'Zuweisung' ist 'Zuweisung'. Der vorhergehende Inhalt geht
verloren. Willst du das nicht, dann darfst du nicht zuweisen,
sondern anhängen.

Eine kleine Einführung, die einen K&R nicht ersetzen kann,
findet sich hier:
http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F

von Falk (Gast)


Lesenswert?

@  Rufus t. Firefly (rufus)

>- Keine mir bekannte Sprache schreibt die Pluralform eines Wortes
>  durch Anhängen eines Apostroph-S oder (wie in Deinem Fall) gar
>  Akzent-S. Der Plural von Array lautet Arrays. Einfach so.

Doch, der alltägliche deutsche Wahnsinn, orientierungslos torkelnd 
zwischen Zeitgeist und Amerikaniserung.

http://www.apostroph.de/

Dort sieht man zahllose Katastrophen mit Apostrophen.

MfG
Falk, leicht OT

von Rolf Magnus (Gast)


Lesenswert?

> Wie geht das Array damit um bzw. wie wird die Anordnung im Array sein?

Das kommt drauf an, wie du den String reinschreibst.

> Oder ist das noch abhängig welchen Befehl ich zum schreiben verwende ?

Ja. Prinzipiell ist das Array immer 256 Bytes lang. Als "String" 
bezeichnet man in C Text, der mit einem '\0' terminiert ist. Das ist 
mehr oder weniger eine Konvention. Die Stringfunktionen von C erzeugen 
das Terminierungszeichen bzw. werten es aus.

Ich drehe es mal zum Verständnis rum und schreibe zuerst den längeren 
String rein:

Nach einem
1
strcpy(TEST, "FEUERWEHR");

Steht dann in den ersten 10 Bytes des Arrays:

'F' 'E' 'U' 'E' 'R' 'W' 'E' 'H' 'R' '\0'

Wenn du dann ein
1
strcpy(TEST, "POLIZEI");

machst, steht dort:

'P' 'O' 'L' 'I' 'Z' 'E' 'I' '\0' 'R' '\0'

Da die Stringfunktionen nur bis zum ersten \0 lesen, findest du da also 
"POLIZEI" drin.

von Mark F. (Gast)


Lesenswert?

Danke für die Informationen!

Mfg Mark

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.