Hallo zusammen, kann mir jemand meine Frage beantworten (siehe Kommentar).
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
buchstaben ist ja ein zeiger auf char für den ein bestimmter Bereich allociert wurde. Aber was passiert hier mit der terminierenden '\0'? Grüße Joe
|
Anzeige
|
C- AnfängerfrageHallo zusammen, kann mir jemand meine Frage beantworten (siehe Kommentar).
buchstaben ist ja ein zeiger auf char für den ein bestimmter Bereich allociert wurde. Aber was passiert hier mit der terminierenden '\0'? Grüße Joe Hallo, offensichtlich: an die Stelle mit dem Index zufallzahl wird in das Array ein '\0' geschrieben. Das ist in der Regel (keine Ahnung ob es Ausnahmen gibt) der "Stringterminator". Mangels echter Strings, erkennt C so, ob in einem Char-Array das Ende erreicht ist. Gruß Dennis
Gast
#3355120
der Wert der Variable zufallszahl ist ja, wenn du so willst, die Länge des Arrays. Somit wird das letzte Element des Arrays mit dem Zeichen '\0' gefüllt. Sagen wir mal die Variable zufallszahl hat den Wert=3 dann Sieht dein Speicher nach der Reservierung so aus weil du 3+1 Byte reservierst 0 1 2 3 // Index [][][][] nachdem
ausgeführt wurde sieht dein Speicher so aus: 0 1 2 3 // Index [][][]['\0'] du könntest auch sagen:
Dann sieht dein Speicher so aus: 0 1 2 3 // Index ['a']['b']['c']['\0'] Danke euch! Klingt auch logisch, allerdings geht mir aus
nicht hervor dass genau das letzte Element mit '\0' gefüllt wird. Grüße Joe Joe M. schrieb: > Klingt auch logisch, allerdings geht mir aus > buchstaben[zufallzahl]='\0'; > nicht hervor dass genau das letzte Element mit '\0' gefüllt wird. Das ergibt sich automatisch daraus, daß eine Zeile vorher buchstaben = malloc( zufallzahl+1); "buchstaben" ein neu alloziertes Char Array zugewiesen wird, daß genau "zufallszahl+1" Zeichen groß ist. Und da der Index jedes Arrays mit 0 beginnt, zeigt der Index "zufallszahl" auf das zufallzahl+1 te Element des Arrays.
Gast
#3355191
Vorne nix, hinten nix: Das ist nix. int zufallzahl=0; gefolgt von: zufallzahl=zufallzahl+x ist entweder Blödsinn oder gleich x. Und für die, die es interessiert was x ist: keine Ahnung. buchstaben = malloc( zufallzahl+1); Reserviert Platz für eine Zeichenkette mit wahrscheinlich x (+1) Zeichen. buchstaben[zufallzahl]='\0'; Ist eine Angstsequenz die bewirkt dass, falls der Rest des Programms genauso strukturiert ist wie die Beispielsequenz, eine eventuelle Stringbearbeitungsfunktion spätestens bei: buchstaben[zufallzahl] Feierabend macht. Amateur schrieb: > Ist eine Angstsequenz die bewirkt dass, falls der Rest des Programms > genauso strukturiert ist wie die Beispielsequenz, eine eventuelle > Stringbearbeitungsfunktion spätestens bei: buchstaben[zufallzahl] > Feierabend macht. Nett gesagt :-) Die aber nur funktioniert solange 'buchstaben' nicht der Zielpuffer einer Stringoperation ist. Ansonsten wird das '\0' ggf. gnadenlos überschrieben. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|