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

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 20 Weitere Headerdateien und ihre Funktionen (ANSI C)
Pfeil 20.1 <assert.h> – Testmöglichkeiten und Fehlersuche
Pfeil 20.2 <ctype.h> – Zeichenklassifizierung und Umwandlung
Pfeil 20.3 Mathematische Funktionen – <math.h>, <tgmath.h> und <complex.h>
Pfeil 20.3.1 Funktionen für reelle und komplexe Gleitpunkttypen
Pfeil 20.3.2 Funktionen nur für reelle Gleitpunkttypen
Pfeil 20.3.3 Funktionen nur für komplexe Gleitpunkttypen
Pfeil 20.3.4 Typengenerische Makros – <tgmath.h>
Pfeil 20.3.5 Gleitpunktwerte klassifizieren
Pfeil 20.3.6 Makro zum Vergleichen von reellen Zahlen
Pfeil 20.3.7 Zugriff auf die Gleitpunkt-Umgebung – <fenv.h>
Pfeil 20.4 <stdlib.h>
Pfeil 20.4.1 Programmbeendigung – »exit()«, »_exit()«, »atexit()« und »abort()«
Pfeil 20.4.2 Strings in numerische Werte konvertieren
Pfeil 20.4.3 Bessere Alternative – Strings in numerische Werte konvertieren
Pfeil 20.4.4 Zufallszahlen
Pfeil 20.4.5 Absolutwerte, der Quotient und der Rest von Divisionen
Pfeil 20.4.6 Suchen und Sortieren – »qsort()« und »bsearch()«
Pfeil 20.4.7 system()
Pfeil 20.5 <locale.h> – länderspezifische Eigenheiten
Pfeil 20.6 Nicht-lokale Sprünge – <setjmp.h>
Pfeil 20.7 <signal.h>
Pfeil 20.8 <string.h> – die »mem…«-Funktionen zur Speichermanipulation
Pfeil 20.8.1 »memchr()« – Suche nach einzelnen Zeichen
Pfeil 20.8.2 »memcmp()« – bestimmte Anzahl von Bytes vergleichen
Pfeil 20.8.3 »memcpy()« – bestimmte Anzahl von Bytes kopieren
Pfeil 20.8.4 »memmove()« – bestimmte Anzahl von Bytes kopieren
Pfeil 20.8.5 »memset()« – Speicherbereich mit bestimmten Zeichen auffüllen


Rheinwerk Computing - Zum Seitenanfang

20.5 <locale.h> – länderspezifische Eigenheiten topZur vorigen Überschrift

In ANSI C sind auch Funktionen vorhanden, die länderspezifische Eigenheiten wie beispielsweise die Formatierung von Geldbeträgen beachten. Dabei handelt es sich um zwei Funktionen und mehrere Makros, die recht selten Beachtung finden.

Wenn Sie ein Programm starten, werden die lokalen Aspekte zunächst nicht berücksichtigt und das Programm wird somit mit den Standard-Einstellungen der Umgebung gestartet.

Die Funktion, mit der Sie ein Programm mit den lokalen Eigenheiten zur Laufzeit anpassen können, lautet:

#include <locale.h>

char *setlocale( int kategorie, const char *name );

Manchmal will man nicht die kompletten lokalen Aspekte berücksichtigen, daher wurde die Kategorie (erstes Argument) folgendermaßen aufgeteilt:


Tabelle 20.12 Kategorien zur Lokalisierung der Umgebung

Kategorie Betroffen davon im Programm
LC_ALL

Alle lokalen Aspekte (die gleich noch in der Kategorie folgen) werden berücksichtigt.

LC_COLLATE

nur die Funktionen zum Vergleichen von Strings, strcoll() und wcscoll()

LC_CTYPE

nur die Funktionen für die Zeichenklassifizierung und -umwandlung in <ctype.h> bzw. <wctype.h>

LC_MONETARY

die Formatierungsinformationen für die Darstellung von Geldbeträgen (siehe auch localeconv())

LC_NUMERIC

das Zeichen für den Dezimalpunkt der Ein-/Ausgabe und Stringkonvertierungen

LC_TIME

die Funktionen zur Formatierung des Datums strftime() und wcsftime()


Für das Argument name in der Funktion setlocale() sind folgende Angaben möglich:


Tabelle 20.13 Zweites Argument für »setlocale()«

Angabe für »name« Bedeutung
"C"

Keine lokalen Aspekte werden berücksichtigt.

""

Die Einstellung richtet sich nach der Umgebung des Compilers.

NULL

Die lokale Umgebung wird nicht verändert. Wird verwendet, um mithilfe des Rückgabewertes von setlocale() die alte Umgebung zu sichern und eventuell wiederherzustellen.


Hierzu folgt ein einfaches Beispiel, mit dem die lokale Umgebung ermittelt und anschließend entsprechend dem Einsatzgebiet des Compilers verändert und zum Schluss wiederhergestellt wird.

/* my_setlocale.c */
#include <stdio.h>
#include <locale.h>
#define KOMMA 3.3223

int main(void) {
   char *local_save = setlocale(LC_ALL, NULL);
   char *local;
   printf("Lokale Umgebung: %s (Standard)\n", local_save);
   printf("Gleitpunkt: %f\n",KOMMA);

   local = setlocale( LC_ALL, "");
   printf("Neue lokale Umgebung: %s\n", local);
   printf("Gleitpunkt: %f\n",KOMMA);

   printf("Standard-Umgebung wiederherstellen\n");
   local = setlocale( LC_ALL, local_save);
   printf("Lokale Umgebung: %s (wiederhergestellt)\n", local);
   return 0;
}

Benötigen Sie außerdem Informationen für die Formatierung von numerischen Werten wie z. B. des Dezimalpunkts oder des Währungssymbols, steht Ihnen noch folgende Funktion zur Verfügung:

#include <locale.h>

struct lconv *localeconv( void );

Die Funktion füllt eine Struktur namens lconv mit der aktuell gesetzten länderspezifischen Umgebung. Diese Struktur beinhaltet folgende Mitglieder:


Tabelle 20.14 Strukturelemente der Struktur »struct lconv«

Elemente in struct lconv Beschreibung
char* decimal_point;

Zeichen für einen Dezimalpunkt nicht-monetärer Werte.

char* thousands_sep;

Trennzeichen für Gruppen von Ziffern. Einige Umgebungen fassen Ziffern in Tausendergruppen zusammen. (Beispielsweise ist das Trennzeichen ein Komma: "66,666".)

char* grouping;

Größe einer Gruppe von Ziffern

char* int_curr_symbol;

internationales Symbol für lokale Währung

char* currency_symbol;

lokales Währungssymbol

char* mon_decimal_point;

Zeichen für den Dezimalpunkt bei Geldbeträgen

char*   mon_thousands_sep;

Trennzeichen für (Tausender-)Gruppen von Ziffern bei Geldbeträgen

char*   mon_grouping;

Größe einer Gruppe von Ziffern bei Geldbeträgen

char*   positive_sign;

Symbol für positive Geldbeträge

char*   negative_sign;

Symbol für negative Geldbeträge

char   int_frac_digits;

Anzahl der Ziffern nach Dezimalpunkt von Geldbeträgen (international) (meistens 2)

char   frac_digits;

Anzahl der Ziffern nach Dezimalpunkt von Geldbeträgen (national) (meistens 2)

char   p_cs_precedes;

Für positive Geldbeträge: 0 = Währungssymbol nach dem Betrag 1 = Währungssymbol vor dem Betrag

char int_p_cs_precedes;

(C99) internationale Version von p_cs_precedes

char   p_sep_by_space;

Für positive Geldbeträge: Leerzeichen zwischen Währungssymbol und dem Betrag: 1 = Leerzeichen 0 = kein Leerzeichen

char int_p_sep_by_space;

(C99) Internationale Version von p_sep_by_space

char   n_cs_precedes;

Für negative Geldbeträge: 0 = Währungssymbol nach dem Betrag 1 = Währungssymbol vor dem Betrag

char int_n_cs_precedes;

(C99) Internationale Version von n_cs_precedes

char   n_sep_by_space;

Für negative Geldbeträge: Leerzeichen zwischen Währungssymbol und dem Betrag: 1 = Leerzeichen 0 = kein Leerzeichen

char int_n_sep_by_space;

(C99) internationale Version von n_sep_by_space

char   p_sign_posn;

Position von positive_sign

char int_p_sign_posn;

(C99) internationale Version von p_sign_posn

char   n_sign_posn;

Position von negative_sign

char int_n_sign_posn;

(C99) internationale Version von n_sign_posn




Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
  
  Zum Katalog
Zum Katalog: C von A bis Z

 C von A bis Z
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: C/C++






 C/C++


Zum Katalog: Einstieg in C






 Einstieg in C


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: C++ Handbuch






 C++ Handbuch


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
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.


[Rheinwerk Computing]

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