Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch für Linux, Unix und Windows
– 2., aktualisierte und erweiterte Auflage 2006
Buch: C von A bis Z

C von A bis Z
1.116 S., mit CD, Referenzkarte, 39,90 Euro
Galileo Computing
ISBN 3-89842-643-2
gp Kapitel 22 Weitere Headerdateien und ihre Funktionen (ANSI C)
  gp 22.1 <assert.h> -– Testmöglichkeiten und Fehlersuche
  gp 22.2 <ctype.h> – Zeichenklassifizierung und Umwandlung
  gp 22.3 Mathematische Funktionen – <math.h>
  gp 22.4 <stdlib.h>
    gp 22.4.1 Programmbeendigung – exit(), _exit(), atexit() und abort()
    gp 22.4.2 Konvertieren von Strings in numerische Werte
    gp 22.4.3 Bessere Alternative – Konvertieren von Strings in numerische Werte
    gp 22.4.4 Zufallszahlen
    gp 22.4.5 Absolutwerte, Quotient und Rest von Divisionen
    gp 22.4.6 Suchen und Sortieren – qsort() und bsearch()
    gp 22.4.7 system()
  gp 22.5 <locale.h> – Länderspezifische Eigenheiten
  gp 22.6 <setjmp.h>
  gp 22.7 <signal.h>
  gp 22.8 <string.h> – Die mem…-Funktionen zur Speichermanipulation
    gp 22.8.1 memchr() – Suche nach einzelnen Zeichen
    gp 22.8.2 memcmp() – Bestimmte Anzahl von Bytes vergleichen
    gp 22.8.3 memcpy() – Bestimmte Anzahl von Bytes kopieren
    gp 22.8.4 memmove() – Bestimmte Anzahl von Bytes kopieren
    gp 22.8.5 memset() – Speicherbereich mit bestimmten Zeichen auffüllen
  gp 22.9 Erweiterter ANSI C-Standard (ANSI C99)
    gp 22.9.1 Neue elementare Datentypen
    gp 22.9.2 <stdint.h> – Ganzzahlige Typen mit vorgegebener Breite
    gp 22.9.3 Komplexe Gleitpunkttypen
    gp 22.9.4 <iso646.h> – Symbolische Konstanten für Operatoren
    gp 22.9.5 Deklaration von Bezeichnern
    gp 22.9.6 inline-Funktionen
    gp 22.9.7 Vordefinierte Makros
    gp 22.9.8 <math.h> – Neue Funktionen
    gp 22.9.9 <wchar.h> – (NA1)
    gp 22.9.10 <wctype.h> (NA1)
    gp 22.9.11 <fenv.h> – Kontrolle der Gleitpunkzahlen-Umgebung
    gp 22.9.12 <inttypes.h> – Für genauere Integer-Typen
    gp 22.9.13 <tgmath.h> – Typengenerische Mathematik-Funktionen
    gp 22.9.14 Zusammenfassung


Galileo Computing - Zum Seitenanfang

22.2 <ctype.h> – Zeichenklassifizierung und Umwandlung  toptop

In der Headerdatei <ctype.h> befinden sich Funktionen, mit denen einzelne Zeichen überprüft oder umgewandelt werden können. In der folgenden Tabelle finden Sie die Syntax der einzelnen Funktionen und die Beschreibungen:


Tabelle 22.1   Funktionen zur Zeichenklassifizierung und Zeichenumwandlung

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, aber kein Leerzeichen
int ispunct(int c); Testet, ob ein Zeichen ein Interpunktionszeichen ist
int isspace(int c); Testet, ob ein Zeichen ein Leerzeichen (Zwischenraumzeichen) 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 isascii(int c); Das Makro isascii prüft, ob das Zeichen c ein normiertes Zeichen des ASCI-Zeichensatzes ist (0–127). Wenn nicht, kann es mit toascii umgewandelt werden.
int isblank(int c); Ist c ein Leerzeichen, wird 1 zurückgegeben, sonst 0 (nur bei ANSI C99-Compilern vorhanden).
int tolower(int c); Wandelt Groß- in Kleinbuchstaben um
int toupper(int c); Wandelt Klein- in Großbuchstaben um
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 etwa 'ä', 'ü', 'ö' ... falsch dargestellt.

Alle Funktionen in der Tabelle erwarten ein int-Argument, dessen Wert als EOF oder unsigned char darstellbar sein muss. Bei Erfolg geben diese Funktionen einen Wert ungleich 0 zurück. Tritt ein Fehler auf, ist der Rückgabewert immer 0. Zur Demonstration der einzelnen Funktionen das folgende Listing:

/* big_small.c */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.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,"r+")) == NULL) {
      printf("Fehler beim Öffnen (lesen) von %s\n", quelle);
      exit(EXIT_FAILURE);
   }
   if((*output=fopen(ziel,"w+")) == NULL) {
      printf("Fehler beim Öffnen (schreiben) von %s\n", ziel);
      exit(EXIT_FAILURE);
   }
}
int main(int argc, char **argv) {
   if(argc<4) {
      printf("Verwendung: "
      "Programmname -[Schalter] datei.txt Zieldatei.txt\n"
      "für -[Schalter] : -b (kompl. Textdatei in Grossschrift)\n"
      "                  -s (kompl. Textdatei in Kleinschrift)\n"
      "                  -i (nat. Zeichen zu ASCII-Zeichen\n");
         return EXIT_FAILURE;
   }
   if(strcmp(argv[1],"-b")==0)
      grosschrift(argv[2],argv[3]);
   else if(strcmp(argv[1],"-s")==0)
      kleinschrift(argv[2],argv[3]);
   else if(strcmp(argv[1],"-i")==0)
      international(argv[2],argv[3]);
   else {
      printf("Verwendung: "
      "Programmname -[Schalter] datei.txtZieldatei.txt\n"
      "für -[Schalter] : -b (kompl. Textdatei in Grossschrift)\n"
      "                  -s (kompl. Textdatei in Kleinschrift)\n"
      "                  -i (nat. Zeichen zu ASCII-Zeichen\n");
         return EXIT_SUCCESS;
   }
   return EXIT_SUCCESS;
}

Mit diesem Beispiel kann bei einer Textdatei jeder Buchstabe in einen großen, einen kleinen oder ein ASCII-Zeichen umgewandelt werden.

 << zurück
  
  Zum Katalog
Zum Katalog: C von A bis Z
C von A bis Z
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-UNIX-Programmierung






 Linux-UNIX-Programmierung


Zum Katalog: C/C++






 C/C++


Zum Katalog: UML 2.0






 UML 2.0


Zum Katalog: Reguläre Ausdrücke






 Reguläre Ausdrücke


Zum Katalog: Linux






 Linux


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de