Zeichen und Zeichenketten
Zeichen: Datentyp char (1 Byte - 256 mgl. Werte)
Variable vom Typ char Zeichen, gem¨aß
fester Codierung (ASCII)
⇐⇒
Zahlenwert, gem¨aß Bin¨arcodierung
(0...255) Zeichen-
manipulation
arithmetische Operation
#include <stdio.h>
int main() {
char c = ’A’;
printf("Zeichen: %c Zahl: %d\n",c,c);
c = 65;
printf("Zeichen: %c Zahl: %d\n",c,c);
c = c + 1;
printf("Zeichen: %c Zahl: %d\n",c,c);
return 0;
}
Zeichenketten: Kein Datentyp in C! Daf¨ur:
Aneinanderreihung (Feld) von Zeichen im Spei- cher.
H a l l o \0 ? ? ? ?
Zeichenkette Terminierer
Feld von Zeichen: char zeile[N];
wobei N > 1 eine konstante nat¨urliche Zahl ist Variable zeile verweist auf N Zeichen:
zeile[0], zeile[1], ..., zeile[N − 1]
Endbegrenzung einer Zeichenkette im Speicher durch ’\0’
Beispiel: char zeile[10] = "Hallo"; (vgl. oben)
Zugriff auf Zeichenketten:
Uber Adresse (Referenz) des ersten Zeichens¨ im Speicher; Ende der Zeichenkette bestimmt durch ’\0’.
Adress-Operator & liefert Referenz auf ein Zei- chen. Diese kann in Zeiger (Pointer) gespei- chert werden.
Referenz einer Zeichenkette ist also &zeile[0]
oder alternativ nur zeile.
char zeile[10] = "Hallo";
char *p_anfang = &zeile[0];
// oder kurz = zeile;
H a l l o \0 ? ? ? ?
#include <stdio.h>
int main() {
char zeile[10] = "Hallo";
char *p_anfang;
p_anfang = &zeile[0];
printf(">>%s<<\n",p_anfang);
p_anfang = zeile;
printf(">>%s<<\n",p_anfang);
printf(">>%s<<\n",zeile);
p_anfang = &zeile[1];
printf(">>%s<<\n",p_anfang);
return 0;
}
Operationen und Funkrionen: (9.8./9.5)
strlen(...) L¨ange ermitteln
strcpy(...)
strncpy(...) String kopieren
strcat(...) String anf¨ugen
strchr(...) Zeichen suchen
strstr(...) Teilstring suchen
char *fgets(char *s, int size, FILE *stream)
. Zeile einlesen
int scanf(const char *format, ...)
. Variablen von Tastatur einlesen int sscanf(const char *str,...)
. Variablen aus Zeichenkette einlesen Beispiel:
int i; float x,y;
char zeile[80];
fgets(zeile,sizeof(zeile),stdin);