C kennt keinen "string" Datentyp. Um eine Zeichenkette zu definieren muß man ein char Array oder einen char Zeiger verwenden. Wenn Sie char Arrays noch nicht kennen, empfiehlt es sich, das jetzt nachzuholen.
Zur Wiederholung, ein char Zeiger wird wie folgt definiert :
main()
{
char *Text;
}
|
Alles was das Programm macht ist, Speicherplatz zu reservieren, in dem eine Adresse
abgelegt werden kann.
Um Text zu initialisieren schreibt man:
main()
{
char *Text = "Thunder";
}
|
Text enthält jetzt die Adresse des ersten Zeichens in Thunder. Grafisch dargestellt ergibt sich:
(Address) (Data)
---- ----
| F1 | 00 <------- Text |----|----| (Data) (Adress) | F2 | 00 | |----|----|> |----> | 54 (T) | D1 |
| F3 | 00 | | |--------|----|
|----|----| *Text | | 68 (h) | D2 |
| F4 | D1 | ------- |--------|----|
--------- | 75 (u) | D3 |
|--------|----|
| 6E (n) | D4 |
|--------|----|
| 64 (d) | D5 |
|--------|----|
| 65 (e) | D6 |
|--------|----|
| 72 (r) | D7 |
|--------|----|
| 00 | D8 |
-------------
Beachten sie das 00 am Ende von Thunder. Es ist das NULL Zeichen und markiert das Ende der Zeichenkette
Will man die Daten ausgeben, auf die der char Zeiger verweist, könnte man schreiben.
| Source |
main()
{
char *Text1 = "Thunder"; /* Define and initalize */
char *Text2; /* Define only */
Text2 = "Bird"; /* Point to some text */
printf("%s%s\n", Text1, Text2);
}
|
| Result |
ThunderBird
|
Das ist alles schön und gut, aber es gibt ein Problem! Thunder und Bird sind Konstanten, sie können nicht verändert werden. Man braucht eine Methode, um Zeichenketten zu manipulieren. In C gibt es die Funktion malloc, die genau das ermöglicht.