Bitte um Hilfe in C++
Geizhals » Forum » Programmierung » Bitte um Hilfe in C++ (46 Beiträge, 385 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.............
Re(13): Bitte um Hilfe in C++
Fly
12.03.2006, 13:40:09
Ich glaub ich komm grad drauf woran's hapert. Gucken wir uns doch mal 'nen Moment lang an, wie der Krempel so im Speicher steht und wie C da Speicher für die Daten allokiert, dann wird's vielleicht verständlich.

Nehmen wir mal an, Du hast sowas wie

char meintext[10];

im Code. Das bedeutet für C, es geht her und reserviert sich 10 byte wo's grad mal so viel Platz findet. C schreibt da allerdings keinen Wert rein, da steht drin was vorher drin stand. Der Speicher schaut dann so aus:

xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx

Wobei xxx für irgendeinen Wert zwischen 0 und 256 steht.

So ein Byte kann 256 verschiedene Werte annehmen, von 0 bis 255. Wenn Du Dir nun den ASCII Table anguckst stellst Du fest, daß der genau 256 Werte groß ist.

Wenn Du nun hergehst und sowas wie

meintext="Hallo";

schreibst, geht C her und schreibt den ASCII-Wert der Buchstaben in die einzelnen Bytes von der Variable rein. Da steht dann im Speicher:

072 097 108 108 111 000 xxx xxx xxx xxx

Wie Du siehst hängt C automatisch ein 0-byte an den String an, damit es erkennen kann daß hier Schluß ist.

Sprich, da steht der ASCII-Wert jedes einzelnen Zeichens drin das Du eben zuweist.

Auslesen kannst Du das jetzt Buchstabe für Buchstabe, indem Du eine Variable definierst, die ein Byte aufnehmen kann. Üblicherweise ist das der Typ char (eigentlich unsigned char, aber lassen wir die Spitzfindigkeiten mal).

char einbuchstabe;

Du kannst jetzt den Text buchstabenweise auslesen, indem Du den Index des einzelnen Bytes im String anlegst. Gehst Du also her und machst

einbuchstabe=meintext[0];

Bekommst Du den Wert 72 in einbuchstabe. Das ist der ASCII-Wert des "H".

________________________________________________________________________
There's a typo in the Bible.
It should read "The geek shall inherit the earth".
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung