007
12.10.2003, 16:16 Uhr
Pablo
Supertux (Operator)
|
Genau
die jungs haben schon alles gesagt.
Ein Zeichen kann ich eine Variable von Typ char aufgenommen werden. Wenn du aber eine Zeichenkette brauchst, dass nimmst du ein Array von char oder ein Pointer auf ein char.
C++: |
char c = 'a'; char d[] = "Ich bin ein Array"; char* e = "Ich bin ein Pointer";
|
Pointers und Arrays sind nicht dasselbe, aber man kann in der gleichen Form behandeln und Pointer sind praktisch arrays, sowie Arrays praktisch Pointer sind.
Kommen wir zu den Zeichen zurück. Ein Zeichen (egal was, Buchstabe, Zahl, +, usw.) müssen irgendwie mit Hardware kodieret werden, damit sie gespeichert werden können. Es gibt die Tabelle der ASCII (American Standard Code for Information Interchange) mit Zeichen von 0 bis 127 und heute bis 256. Man kann ihnen eine Zahl zuordenen, wie du siehst. So ist zum Beispiel das Zeichen Nummer 48 das Zeichen '0', d.h. das Zeichen, das einer 0 entspricht. Ein char ist ein Datentyp wie ein unsigned int aber beschränkt auf 256. char kann nicht Zahlen größer als 265 aufnehmen, sie wandelt in kleinen Zahlen um.
Also, du hast in deinem Programm eine Variable von Typ int namens c. Das geht auch, wenn du char statt von int benutzt. getchar() wartet auf das ENTER drücken und dann nimmt die Zeichen von stdin Puffer. Da jedes Zeichen eine eindeutige Zahl hat, kannst du sie als int oder char speichern, das spielt keine Rolle. Nehmen wir an, dass du hello eingegeben hast. getchar liefert den ASCII Code bzw. das char vom Zeichen 'h' und wird in int aufgenommen. Es wird überprüft, ob dieses Zeichen EOF ist. Nein, ist es nicht, also wird die einzige putchar() Anweisung der while Schleife ausgeführt. putchar() schreibt in stdout (Bildschirm) das Zeichen, das man der getchar() übergibt. Nun wird nochmal getchar() aufgerufen und jetzt leifert das 'e' zurück, und wird ausgegeben, usw, das widerholt sich, bis EOF erreicht wurde.
Unter Linux erreicht man EOF in Puffer zu schreiben, wenn man Strg+D drückt. Ich vermute, dass unter DOS der gleiche Fall ist, denn Strg+C bricht das Programm unter Linux und unter DOS ab. -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! |