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

Kapitel 22 Weitere Headerdateien und ihre Funktionen (ANSI C)

In diesem Kapitel sollen Funktionen aus den Standard-Headerdateien näher erläutert werden, die bisher noch nicht oder nur zu kurz zur Sprache gekommen sind. Alle Headerdateien sind vom ANSI C-Komitee vorgeschrieben und somit auf allen Systemen vorhanden.


Galileo Computing - Zum Seitenanfang

22.1 <assert.h> -– Testmöglichkeiten und Fehlersuche  toptop

Mit der Funktion

#include <assert.h>
void assert(int ausdruck);

können Ausdrücke aus einem Programm auf logische Fehler getestet werden. Ist ausdruck gleich 0, wird das Programm mit einer Fehlermeldung beendet. Genauer: Erst wird eine Fehlermeldung auf stderr ausgegeben, etwa:

Assertion failed: ausdruck, file filename, line nnn

Der Dateiname und die Zeilennummern stammen von den Präprozessor-Makros __FILE__ und __LINE__. Danach wird die Ausführung des Prozesses mit der Funktion abort() beendet.

Ein einfaches Beispiel: Es werden zwei Zahlen miteinander dividiert. Dabei darf keine der Zahlen eine Null oder ein negativer Wert sein. Außerdem soll der Teiler nicht größer als der Nenner sein. Hier das Listing:

/* assertion1.c */
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int divide(int zahl1, int zahl2) {
   assert( (zahl1 >= 0 && zahl1 >= zahl2) && (zahl2 >= 0) );
   return zahl1 / zahl2;
}
int main(void) {
   printf("%d / %d = %d\n",5,2,divide(5,2));
   printf("%d / %d = %d\n",3,4,divide(3,4));
   printf("%d / %d = %d\n",4,4,divide(4,4));
   return EXIT_SUCCESS;
}

Das Programm wird durch den Funktionsaufruf divide(3,4) mit folgender Fehlermeldung abgebrochen:

Assertion failed: assert( (zahl1>=0 && zahl1>=zahl2) &&
(zahl2>=0) ), file:Pfad_zur_Datei.c, line 6

Diese Art Programme zu testen, eignet sich sehr gut für größere Projekte. Damit Sie nicht den ganzen Code durchsuchen müssen, um anschließend bei der Fertigstellung des Programms die assert()-Anweisungen zu entfernen, müssen Sie nur das Makro

NDEBUG

angeben, und der Compiler ignoriert alle assert()-Aufrufe. NDEBUG muss allerdings noch vor der Headerdatei

#include <assert.h>

angegeben werden. Bei dem folgenden Beispiel wird die assert()-Anweisung ignoriert:

/* assertion2.c */
#include <stdio.h>
#include <stdlib.h>
#define NDEBUG
#include <assert.h>
int divide(int zahl1, int zahl2) {
   assert( (zahl1 >= 0 && zahl1 >= zahl2) && (zahl2 >= 0) );
   return zahl1 / zahl2;
}
int main(void) {
   printf("%d / %d = %d\n",5,2,divide(5,2));
   printf("%d / %d = %d\n",3,4,divide(3,4));
   printf("%d / %d = %d\n",4,4,divide(4,4));
   return EXIT_SUCCESS;
}
 << 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