====== Char ====== In C ist ein Char auf modernen Computern 1 Byte bzw. mindestens 8 Bit groß((Es gibt auch Computeranlagen, deren Byte 9 bzw. 10 Bit breit ist)). Die Bezeichung Char kommt daher, weil man den Datentyp vor allem dafür verwendet um Zeichen(engl. Characters) zu halten. Ein [[c:type:array|Array]] aus Chars nennt man Zeichenkette ([[glossary:cstring|C-String]]). Der Char Datentyp zählt zu den integeren ((ganzzahligen, zählbaren)) Datentypen, dass bedeutet er kann keine [[c:type:floats|Fließkommazahlen]] speichern wie z.B. 3.14. Man verwendet den Char zum Speichern von einzelnen Zeichen oder bei Char-[[c:type:array|Arrays]] zum Speichern von Zeichenketten. Eigentlich speichert sich der Char dann einfach nur den Zahlenwert des Zeichens, welches man eigentlich speichern möchte. Dafür wurden alle Werte von 0 bis 255 mit Zeichen belegt. Dies nennt man die [[theory:encoding:ascii|ASCII Tabelle]]. Als kleine Demonstration dient ein Programm wie dieses: #include int main( int argc, char **argv ) { unsigned char ascii_char = 0; // Das erste Zeichen hat den Zahlwert 0 while( ascii_char <= 127 ) { printf( "Zahlenwert: %d. Dazugehöriges Zeichen: %c\n", ascii_char, ascii_char ); ascii_char = ascii_char + 1; // Der Beweis, dass char Ganzzahlen hält } return 0; } Der Output ist fast identisch mit der Tabelle. Bloß wird z.B. statt TAB (Zeichen 8) wirklich ein Tabulator Sprung gemacht etc. Wäre unser Char nicht unsigned gäbe es Probleme. Eine Erklärung dazu findet man [[c:bitoperators#not|hier]]. ==== Strings ==== Um jedoch in C [[glossary:cstring|Strings]] zu erstellen müssen wir ein [[c:type:Array]] aus Chars erstellen. Dieses erstellt sich wie jedes andere Array auch. Es kann auch multidimensionale Char-[[c:type:array|Arrays]] geben, falls einem 256 Zahlen zum Rechnen ausreichen, oder man eine Art Kreuzworträtselalgorithmus schreiben möchte. Diese [[c:type:array|Arrays]] werden häufig verwendet um Spielfelder abzubilden. Bei Char-[[c:type:array|Arrays]], die man als Strings verwenden möchte, muss man jedoch aufpassen, dass sie mit einem [[glossary:nullbyte|Null-Byte]] ('\0') enden, damit der Compiler weiß, wo sich das Ende des [[c:type:array|Arrays]] befindet. Es ist jedoch oft üblich Char-[[c:type:array|Arrays]] [[c:lib:stdlib:malloc|dynamisch]] zu erstellen, um Platz zu sparen oder Datenverluste zu vermeiden. ====== siehe auch ====== [[c:type:|C-Datentypen]]: [[c:type:short]], [[c:type:int]], [[c:type:long]]