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 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

In diesem Kapitel werden Funktionen aus den Standard-Headerdateien näher erläutert, 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.

20 Weitere Headerdateien und ihre Funktionen (ANSI C)


Rheinwerk Computing - Zum Seitenanfang

20.1 <assert.h> – Testmöglichkeiten und Fehlersuche topZur vorigen Überschrift

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 gesagt: 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 durch einander 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 sehen Sie 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;
}


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