ein Kapitel zurück                                           ein Kapitel weiter

Mit den Funktionen der Headerdatei <ctype.h> sind wir in der Lage einzelne Zeichen zu behandeln. Diese Funktionen benötigen aber Informationen vom Typ int. Bevor ich Ihnen einige Beispiele dazu zeige, sehen hier in der Tabelle einen Überblick über alle Funktionen in dieser Headerdatei........

Prototyp Beschreibung
int isalnum(int c); Testet, ob ein Zeichen ein alphanumerisches Zeichen ist.
int isalpha(int c); Testet, ob ein Zeichen ein Buchstabe ist.
int iscntrl(int c); Testet, ob ein Zeichen ein Steuerzeichen ist. (z.B. CTRL+B)
int isdigit(int c); Testet, ob ein Zeichen eine Dezimalziffer ist.
int isgraph(int c); Testet, ob ein Zeichen ein druckbares Zeichen ist.
int islower(int c); Testet, ob ein Zeichen ein Kleinbuchstabe ist.
int isprint(int c); Testet, ob ein Zeichen ein druckbares Zeichen ist.
int ispunct(int c); Testet, ob ein Zeichen ein Interpunktionszeichen ist.
int isspace(int c); Testet, ob ein Zeichen ein Leerzeichen ist.
int isupper(int c); Testet, ob ein Zeichen ein Großbuchstabe ist.
int isxdigit(int c); Testet, ob ein Zeichen eine hexadezimale Ziffer ist.
int tolower(int c); Wandelt Groß- in Kleinbuchstaben um.
int toupper(int c); Wandelt Klein- in Großbuchstaben um.
int isascii(int c); Makro zur Klassifizierung von Zeichen.
int toascii(int c); toascii ist ein Makro, das den übergebenen Wert c (durch Löschen aller Bits, außer den 7 niederwertigsten) auf den Bereich 0 bis 127 begrenzt und das Ergebnis dieser Operation zurückliefert. Dadurch werden aber nationale Zeichen wie zum Beispiel 'ä','ü','ö'..... falsch dargestellt.


Hierzu ein Programmbeispiel zu Demonstration der Funktionen....

/*Download:ctype.c*/
#include <stdio.h> #include <ctype.h> #include <string.h> /*Prototypen*/ void grosschrift(char *, char *); void kleinschrift(char *, char *); void international(char *,char *); void oeffne_dateien(char *, char *, FILE **, FILE **); void grosschrift(char *arg2, char *arg3) { FILE *in,*out; int c; oeffne_dateien(arg2,arg3,&in,&out); while((c=getc(in)) !=EOF) { if(islower(c)) putc(toupper(c),out); else putc(c,out); } } void kleinschrift(char *arg2, char *arg3) { FILE *in,*out; int c; oeffne_dateien(arg2,arg3,&in,&out); while((c=getc(in)) !=EOF) { if(isupper(c)) putc(tolower(c),out); else putc(c,out); } } void international(char *arg2, char *arg3) { FILE *in,*out; int c; oeffne_dateien(arg2,arg3,&in,&out); while((c=getc(in)) !=EOF) { if(isascii(c)==0) putc(toascii(c),out); else putc(c,out); } } void oeffne_dateien(char *quelle, char *ziel, FILE **input, FILE **output) { if((*input=fopen(quelle,"rt")) == NULL) { fprintf(stderr,"Fehler beim oeffnen (lesen) von %s\n",quelle); exit(0); } if((*output=fopen(ziel,"wt")) == NULL) { fprintf(stderr,"Fehler beim oeffnen (schreiben) von %s\n",ziel); exit(0); } } int main(int argc, char **argv) { if(argc<4) { fprintf(stderr,"usage : Programmname -[Schalter] Textdatei.txt Zieldatei.txt\n" "für -[Schalter] : -b (kompl. Textdatei in Grossschrift)\n" " -s (kompl. Textdatei in Kleinschrift)\n" " -i (nat. Zeichen in ASCII-Zeichen konvert.\n"); exit(0); } if(strcmp(*++argv,"-b")==0) grosschrift(argv[2],argv[3]); else if(strcmp(*argv,"-s")==0) kleinschrift(argv[2],argv[3]); else if(strcmp(*argv,"-i")==0) international(argv[2],argv[3]); else { fprintf(stderr,"Fehler beim 2.Argument(unbekannt) : %s \n",*argv); fprintf(stderr,"2.Argument. : -b (kompl. Textdatei in Grossschrift)\n" " -s (kompl. Textdatei in Kleinschrift)\n" " -i (nat. Zeichen in ASCII-Zeichen konvert.\n"); exit(1); } return 0; }

Mit diesem Beispiel können sie bei Textdateien die Schrift auf alle Buchstaben groß, alle Buchstaben klein stellen oder nicht ASCII-Zeichen in solche verwandeln.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf