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

Inhaltsverzeichnis
Vorwort
Vorwort des Gutachters
1 Einstieg in C
2 Das erste Programm
3 Grundlagen
4 Formatierte Ein-/Ausgabe mit »scanf()« und »printf()«
5 Basisdatentypen
6 Operatoren
7 Typumwandlung
8 Kontrollstrukturen
9 Funktionen
10 Präprozessor-Direktiven
11 Arrays
12 Zeiger (Pointer)
13 Kommandozeilenargumente
14 Dynamische Speicherverwaltung
15 Strukturen
16 Ein-/Ausgabe-Funktionen
17 Attribute von Dateien und das Arbeiten mit Verzeichnissen (nicht ANSI C)
18 Arbeiten mit variabel langen Argumentlisten – <stdarg.h>
19 Zeitroutinen
20 Weitere Headerdateien und ihre Funktionen (ANSI C)
21 Dynamische Datenstrukturen
22 Algorithmen
23 CGI mit C
24 MySQL und C
25 Netzwerkprogrammierung und Cross–Plattform-Entwicklung
26 Paralleles Rechnen
27 Sicheres Programmieren
28 Wie geht’s jetzt weiter?
A Operatoren
B Die C-Standard-Bibliothek
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch
Buch: C von A bis Z

C von A bis Z
3., aktualisierte und erweiterte Auflage, geb., mit CD und Referenzkarte
1.190 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1411-7
Pfeil B Die C-Standard-Bibliothek
Pfeil B.1 <assert.h>
Pfeil B.2 <complex.h> (C99)
Pfeil B.3 <ctype.h>
Pfeil B.4 <errno.h>
Pfeil B.5 <fenv.h> (C99)
Pfeil B.6 <float.h>
Pfeil B.7 <inttypes.h> (C99)
Pfeil B.8 <iso646.h> (NA1)
Pfeil B.9 <limits.h>
Pfeil B.10 <locale.h>
Pfeil B.11 <math.h>
Pfeil B.12 <setjmp.h>
Pfeil B.13 <signal.h>
Pfeil B.14 <stdarg.h>
Pfeil B.15 <stdbool.h> (C99)
Pfeil B.16 <stddef.h>
Pfeil B.17 <stdint.h> (C99)
Pfeil B.18 <stdio.h>
Pfeil B.19 <stdlib.h>
Pfeil B.20 <string.h>
Pfeil B.21 <tgmath.h> (C99)
Pfeil B.22 <time.h>
Pfeil B.23 <wchar.h> (NA1)
Pfeil B.24 <wctype.h> (NA1)


Rheinwerk Computing - Zum Seitenanfang

B.23 <wchar.h> (NA1) topZur vorigen Überschrift

Bisher haben Sie eine Menge Funktionen zu Verarbeitung von gewöhnlichen Strings gesehen. Wenn Sie auf der Suche nach entsprechenden Gegenstücken aus den Headerdateien <stdio.h>, <stdlib.h>, <string.h> oder <time.h> für Breitzeichen-Strings (vom Typ wchar_t) sind, werden Sie in dem Header <wchar.h> fündig.

Zunächst die Übersicht über die Gegenstücke für breite Zeichen aus der Headerdatei <stdio.h>, die sich in <wchar.h> befinden:


Tabelle B.50 Alternative Breitzeichen-Gegenstücke für Standard-Ein-/Ausgabe-Funktionen der Headerdatei <stdio.h> in <wchar.h>

Funktion Beschreibung
int fwprintf(
 FILE * restrict stream,
 const wchar_t * restrict frmt,
 ...);

Schreibt formatiert einen Breitzeichenstring in einen Stream.

int fwscanf(
 FILE * restrict stream,
 const wchar_t * restrict frmt,
 ...);

Liest formatiert einen Breitzeichenstring aus einem Stream.

int swprintf(
 wchar_t * restrict s, size_t n,
 const wchar_t * restrict frmt,
 ...);

formatiert Daten in einen Breitzeichenstring speichern

int swscanf(
 const wchar_t * restrict s,
 const wchar_t * restrict frmt,
 ...);

formatiert Daten aus einem Breitzeichenstring lesen

int vfwprintf(
 FILE * restrict stream,
 const wchar_t * restrict frmt,
 va_list arg);

formatiert einen Breitzeichenstring in einen Stream schreiben (mit Argumentzeiger)

int vfwscanf(
 FILE * restrict stream,
 const wchar_t * restrict frmt,
 va_list arg);

Liest formatiert einen Breitzeichenstring aus einem Stream und speichert diesen im Argumentzeiger.

int vswprintf(
 wchar_t * restrict s, size_t n,
 const wchar_t * restrict frmt,
 va_list arg);

formatiert Daten in einem Breitzeichenstring speichern (mit Argumentzeiger)

int vswscanf(
 const wchar_t * restrict s,
 const wchar_t * restrict frmt,
 va_list arg);

formatiert Daten aus einem Breitzeichenstring lesen, um die Daten im Argumentzeiger zu speichern

int vwprintf(
 const wchar_t * restrict frmt,
 va_list arg);

formatiert einen Breitzeichenstring auf stdout schreiben (mit Argumentzeiger)

int vwscanf(
 const wchar_t * restrict frmt,
 va_list arg);

formatiert einen Breitzeichenstring von stdin einlesen und im Argumentzeiger speichern

int wprintf(
 const wchar_t * restrict frmt,
 ...);

formatiert einen Breitzeichenstring auf stdout schreiben

int wscanf(
 const wchar_t * restrict frmt,
 ...);

formatiert einen Breitzeichenstring von stdin einlesen

wint_t fgetwc(FILE *stream);

ein Breitzeichen aus einem Stream lesen

wchar_t *fgetws(
 wchar_t * restrict s, int n,
 FILE * restrict stream);

Breitzeichenstring aus einem Stream lesen

wint_t fputwc(
   wchar_t c, FILE *stream);

ein Breitzeichen in einem Stream schreiben

int fputws(
 const wchar_t * restrict s,
 FILE * restrict stream);

einen Breitzeichenstring in einem Stream schreiben

int fwide(
   FILE *stream, int mode);

Überprüft oder setzt die Zeichenorientierung, ob und wenn ein Stream byte- oder wide-orientiert ist. Rückgabe: >0: wide-orientiert (ggf. setzen) <0: byte-orientiert (ggf. setzen) =0: Orientierung wird nicht geändert.

wint_t getwc(FILE *stream);

Ein Breitzeichen aus einem Stream lesen. Kann auch als Makro implementiert sein.

wint_t getwchar(void);

ein Breitzeichen von der Standardeingabe einlesen

wint_t putwc(
   wchar_t c, FILE *stream);

Ein Breitzeichen in einem Stream schreiben. Kann auch als Makro implementiert sein.

wint_t putwchar(wchar_t c);

ein Breitzeichen auf die Standardausgabe schreiben

wint_t ungetwc(
   wint_t c, FILE *stream);

Schiebt ein Breitzeichen in den Streampuffer zurück.


Natürlich finden Sie in <wchar.h> auch Funktionen für numerische Konvertierungen, wie aus der Headerdatei <stdlib.h>, nur eben für Breitzeichenstrings. Hier die entsprechenden Funktionen:


Tabelle B.51 Alternative Breitzeichen-Gegenstücke für Funktionen für numerische Konvertierungen aus der Headerdatei <stdlib.h> in <wchar.h>

Funktion Beschreibung
double wcstod(
 const wchar_t * restrict nptr,
 wchar_t ** restrict endptr);

einen Breitzeichenstring in einen double-Wert konvertieren

float wcstof(
 const wchar_t * restrict nptr,
 wchar_t ** restrict endptr);

einen Breitzeichenstring in einen float-Wert konvertieren

long double wcstold(
 const wchar_t * restrict nptr,
 wchar_t ** restrict endptr);

einen Breitzeichenstring in einen long double-Wert konvertieren

long int wcstol(
 const wchar_t * restrict nptr,
 wchar_t ** restrict endptr,
 int base);

einen Breitzeichenstring in einen long int-Wert konvertieren

long long int wcstoll(
 const wchar_t * restrict nptr,
 wchar_t ** restrict endptr,
 int base);

einen Breitzeichenstring in einen long long int-Wert konvertieren

unsigned long int wcstoul(
 const wchar_t * restrict nptr,
 wchar_t ** restrict endptr,
 int base);

einen Breitzeichenstring in einen unsigned long int-Wert konvertieren

unsigned long long int wcstoull(
 const wchar_t * restrict nptr,
 wchar_t ** restrict endptr,
 int base);

einen Breitzeichenstring in einen unsigned long long-Wert konvertieren


Auch die Stringfunktionen für Breitzeichenstrings finden Sie in der Headerdatei <wchar.h>. Sie sind ihren Gegenstücken aus der Headerdatei <string.h> ebenbürtig:


Tabelle B.52 Alternative Breitzeichen-Gegenstücke für Stringfunktionen der Headerdatei <string.h> in <wchar.h>

Funktion Beschreibung
wchar_t *wcscpy(
 wchar_t * restrict s1,
 const wchar_t * restrict s2);

einen Breitzeichenstring kopieren

wchar_t *wcsncpy(
 wchar_t * restrict s1,
 const wchar_t * restrict s2,
 size_t n);

eine bestimmte Anzahl von Breitzeichen eines Breitzeichenstrings kopieren

wchar_t *wmemcpy(
 wchar_t * restrict s1,
 const wchar_t * restrict s2,
 size_t n);

Kopiert einen ganzen Speicherblock mit Breitzeichen.

wchar_t *wmemmove(
 wchar_t *s1,
 const wchar_t *s2,
 size_t n);

wie wmemcpy(), nur wird der korrekte Kopiervorgang garantiert

wchar_t *wcscat(
 wchar_t * restrict s1,
 const wchar_t * restrict s2);

Hängt einen Breitzeichenstring an einen anderen.

wchar_t *wcsncat(
 wchar_t * restrict s1,
 const wchar_t * restrict s2,
 size_t n);

Hängt einen Breitzeichenstring mit bestimmter Länger an einen anderen.

int wcscmp(
 const wchar_t *s1,
 const wchar_t *s2);

zwei Breitzeichenstrings miteinander vergleichen

int wcscoll(
 const wchar_t *s1,
 const wchar_t *s2);

länderspezifische Vergleichsfunktion mit Breitzeichenstrings

int wcsncmp(
 const wchar_t *s1,
 const wchar_t *s2,
 size_t n);

zwei Breitzeichenstrings bis zu einer bestimmten Länge miteinander vergleichen

size_t wcsxfrm(
 wchar_t * restrict s1,
 const wchar_t * restrict s2,
 size_t n);

länderspezifische Umwandlung von Breitzeichen

int wmemcmp(
 const wchar_t *s1,
 const wchar_t *s2,
 size_t n);

Vergleicht zwei Speicherblöcke von Breitzeichenstrings mit einer bestimmten Anzahl von Breitzeichen miteinander.

wchar_t *wcschr(
  const wchar_t *s, wchar_t c);

ein Breitzeichen in einem Breitzeichenstring suchen

size_t wcscspn(
 const wchar_t *s1,
 const wchar_t *s2);

Ermittelt die Länge der nicht übereinstimmenden Breitzeichen.

wchar_t *wcspbrk(
 const wchar_t *s1,
 const wchar_t *s2);

Sucht Breitzeichen aus einer Breitzeichenmenge im Breitzeichenstring.

wchar_t *wcsrchr(
  const wchar_t *s, wchar_t c);

ein Breitzeichen in einem Breitzeichenstring suchen (von hinten)

size_t wcsspn(
 const wchar_t *s1,
 const wchar_t *s2);

Ermittelt die Länge der übereinstimmenden Breitzeichen.

wchar_t *wcsstr(
 const wchar_t *s1,
 const wchar_t *s2);

Sucht eine bestimmte Breitzeichenstringfolge in einem Breitzeichenstring.

wchar_t *wcstok(
 wchar_t * restrict s1,
 const wchar_t * restrict s2,
 wchar_t ** restrict ptr);

einen Breitzeichenstring nach bestimmten Breitzeichen zerlegen

wchar_t *wmemchr(
 const wchar_t *s,
 wchar_t c, size_t n);

Sucht ein bestimmtes Breitzeichen aus einem Speicherblock.

size_t wcslen(const wchar_t *s);

Länge des Breitzeichenstrings ermitteln (ohne L'\0')

wchar_t *wmemset(
 wchar_t *s, wchar_t c,
 size_t n);

Füllt einen bestimmten Speicherblock mit einem Breitzeichenstring.


Für die Formatierung von Datum und Uhrzeit in einem Breitzeichenstring ist in <wchar.h> die Funktion wcsftime() deklariert:

size_t wcsftime(
   wchar_t * restrict s, size_t maxsize,
   const wchar_t * restrict format,
   const struct tm * restrict timeptr);

Die Verwendung der Funktion entspricht exakt der Verwendung der Funktion strftime() aus der Headerdatei <time.h>, nur eben mit Breitzeichenstrings.

Des Weiteren finden Sie folgende Funktionen zur erweiterten Umwandlung von Breitzeichen in Multibytezeichen und umgekehrt:


Tabelle B.53 Funktionen zum Umwandlung von Breitzeichen in Multibyte-Zeichen und umgekehrt

Funktion Beschreibung
wint_t btowc(int c);

ein Byte-Zeichen in ein Breitzeichen konvertieren

int wctob(wint_t c);

ein Breitzeichen in ein Byte-Zeichen konvertieren, wenn möglich

int mbsinit(
   const mbstate_t *ps);

Testet, ob der Multibyte-Shift-Status der ursprüngliche Status ist.

size_t mbrlen(
  const char * restrict s,
  size_t n,
  mbstate_t * restrict ps);

Gibt die Länge eines Multibyte-Zeichens zurück und speichert den Shift-Status.

size_t mbrtowc(
  wchar_t * restrict pwc,
  const char * restrict s,
  size_t n,
  mbstate_t * restrict ps);

ein Multibyte-Zeichen in ein Breitzeichen konvertieren und den Shift-Status speichern

size_t wcrtomb(
   char * restrict s,
   wchar_t wc,
   mbstate_t * restrict ps);

ein Breitzeichen in ein Multibyte-Zeichen konvertieren

size_t mbsrtowcs(
   wchar_t * restrict dst,
   const char ** restrict src,
   size_t len,
   mbstate_t * restrict ps);

einen Multibyte-String in einen Breitzeichenstring konvertieren und den Shift-Status speichern

size_t wcsrtombs(
  char * restrict dst,
  const wchar_t ** restrict src,
  size_t len,
  mbstate_t * restrict ps);

einen Breitzeichenstring in einen Multibyte-String konvertieren und den Shift-Status speichern


Folgende Typen sind in der Headerdatei <wchar.h> außerdem noch deklariert:


Tabelle B.54 In <wchar.h> deklarierte Typen

Typ Beschreibung
mbstate_t

Mit diesem Typ wird der Status einer Umwandlung von Multibyte-Strings in Breitzeichenstrings und umgekehrt gespeichert.

size_t

Auch hier: Ein ganzzahliger unsigned-Typ, der als Ergebnis von sizeof-Operationen verwendet wird. Der Typ ist ebenfalls in mehreren Headerdateien der Standard-Bibliothek definiert.

struct tm

eine Struktur, die Datum und Uhrzeit repräsentiert

wchar_t

ein ganzzahliger Typ mit der Größe des größten zu speichernden erweiterbaren Zeichensatzes, der implementiert ist

wint_t

Ein ganzzahliger Typ mit mindestens der Breite von int. Der Typ umfasst auf jeden Fall den kompletten Wertebereich von wchar_t und muss auch das Makro WEOF darstellen können. Häufig sind wchar_t und wint_t dieselben Typen und gleichwertig.


Neben den Makros WCHAR_MIN, WCHAR_MAX (siehe <stdint.h>) und NULL definiert <wchar.h> auch das Makro WEOF. Diese Konstante ist vom Typ wint_t und stellt einen Wert dar, der nicht mit dem Wert eines Zeichens aus dem erweiterten Zeichensatz übereinstimmt. WEOF kann im Gegensatz zu EOF auch einen positiven Wert haben und wird von vielen Funktionen im Fall eines Fehlers oder beim Ende eines Lesevorgangs zurückgegeben.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: C von A bis Z

 C von A bis Z
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: C/C++






 C/C++


Zum Rheinwerk-Shop: Einstieg in C






 Einstieg in C


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: C++ Handbuch






 C++ Handbuch


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
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.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern