Am Samstag, 28. Februar 2004 14:45 schrieb Daniel Feist:
Hallo, Ich habe folgende Frage zu diesem Programmausschnitt:
[..]
int main() { char wort[10]; wort[0]='B'; //(1) wort[1]='i'; wort[2]='l'; wort[3]='d'; wort[4]='\0';
[..]
Zu //(1) - warum muss das B hier in ' ' stehen und nicht in normalen Anführungszeichen(" ")?
Ist in C halt so definiert, andere Sprachen regeln das anders: "" -> String '' -> Zeichen, quasi nur ein Repräsentant des ASCII-Werts der dahinter steht.
In dem eindimensionalen char-Array können ja 10 Werte gespeichert werden. Aber Halt! Eigentlich sind es ja nur neun, weil am Ende jeder
Richtig.
String eine binäre Null stehen muss. Aber warum muss sie das? Kann mir das jemand erklären? Viele Dank schonmal im vorraus!
Die Null ist auch ein Wert, dass die hinten steht, ist bei C für Strings eben so geregelt. Wenn Du nur Einzelzeichen oder Zahlen in dem Array ablegst, muss da keinesfalls ne Null hinten dran stehen. Warum das so ist, Frag Dennis M. Ritchie und Brian W. Kernighan die haben das so definiert. Ich Programmier z.B. Hauptberuflich meist in PL/1 auf nem IBM Großrechner, da ist die Sache anders gelagert ein zehn Zeichen langer String nimmt exakt 10 Zeichen auf, auch bei der Ausgabe werden zehn ausgegeben, zum löschen muss das Ding dann auch von vorne bis hinten mit Leerzeichen gefüllt werden (ok, ist recht einfach, weil beim Füllen immer der Rest mit Leerzeichen aufgefüllt wird) und Strings stehen in ''. -- Machs gut | http://www.iivs.de/schwinde/buerger/tremmel/ | http://packman.links2linux.de/ Manfred | http://www.knightsoft-net.de