Kleines C Programm |
27.12.2011, 01:24 | Auf diesen Beitrag antworten » | |||||||||||||||
C Programmierer | Kleines C Programm Guten Morgen allerseits, ich verstehe folgendes Programm nicht [das ich selbst programmiert habe ]:
Es fängt bei char z[2] an. Was genau mach ich mit diesem Befehl? Nun gut, ich definiere einen string z. Doch wofür steht die 2? Ich dachte eigentlich bisher, dass die 2 für die Anzahl der Elemente, also der Buchstaben stehen würde. Aber dann fülle ich doch den string mit sprintf(z, "peace") aus, und peace besteht aus 5 Buchstaben. Dies klappt alles ohne Probleme, hä was? |
|||||||||||||||
|
||||||||||||||||
28.12.2011, 20:21 | Auf diesen Beitrag antworten » | |||||||||||||||
Karlito | Hallöchen, dein Programm funktioniert nur, weil wie es scheint der Platz für ein Char-Array immer in einem größeren Abstand, bei mir 16 Byte-Weise, reserviert wird. Ich habe hier mal ein Beispielprogramm:
Dieses Funktioniert auch noch. Man sieht aber, dass du mit in den Speicherbereich des 2. Arrays reinschreibst. Lässt du das Zweite Array weg, bekommst du einen Speicherzugriffsfehler. C prüft nicht, ob du die Länge eines Arrays überschreitest. Das ist auch eine der Gefahren beim C-Programmieren. Je besser du dir sowas klar machst, desto weniger läufst du in irgendwelche Fallen. Hier noch mal das Programm mit dem Speicherzugriffsfehler:
Ein wichtiger Hinweis noch: printf Strings sind in C mit 0 Terminiert. D.h. Die das Char-Array muss immer ein Byte länger sein als die Zeichenkette! Hier ein Beispielprogramm:
Wenn da noch Probleme beim Verständnis sind, gerne noch mal nachfragen. Viele Grüße, Karlito |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |
|