5.1 Deklaration und Definition
67
5.2 Der Datentyp »int« (Integer)
69
5.3 Variablen verwenden
70
5.4 Der Datentyp »long«
73
5.5 Der Datentyp »long long«
74
5.6 Der Datentyp »short«
74
5.7 Ganzzahlige Typen mit vorgegebener Breite – <stdint.h>
75
5.7.1 <inttypes.h> (C99)
77
5.8 Die Gleitpunkttypen »float« und »double«
78
5.8.1 Gleitpunkttypen im Detail
80
5.8.2 »float« im Detail
80
5.8.3 »double« im Detail
81
5.8.5 Einiges zu n-stelliger Genauigkeit
82
5.9 Numerische Gleitpunktprobleme
83
5.10 Komplexe Gleitpunkttypen – <complex.h>
86
5.11 Der Datentyp »char«
87
5.12 Nationale contra internationale Zeichensätze
92
5.13 Der Breitzeichen-Typ »wchar_t«
94
5.14 Multibyte-Zeichen
95
5.15 Boolescher Wert – <stdbool.h>
96
5.16 Vorzeichenlos und vorzeichenbehaftet
97
5.17 Limits für Ganzzahl- und Gleitpunktdatentypen
99
5.19.1 Ganzzahlkonstanten
103
5.19.2 Gleitpunktkonstanten
103
5.19.3 Zeichenkonstanten
104
5.19.4 Stringliterale (Stringkonstante)
104
5.20 Umwandlungsvorgaben für formatierte Ein-/Ausgabe
104
9.1 Was sind Funktionen?
177
9.2 Wozu dienen Funktionen?
177
9.3 Definition von Funktionen
177
9.5 Funktionsdeklaration
180
9.7 Globale Variablen
184
9.8 Statische Variablen
185
9.9 Schlüsselwörter für Variablen – Speicherklassen
186
9.10 Typ-Qualifizierer
188
9.11 Geltungsbereich von Variablen
188
9.12 Speicherklassen-Spezifizierer für Funktionen
190
9.13 Datenaustausch zwischen Funktionen
191
9.14 Wertübergabe an Funktionen (call-by-value)
192
9.15 Der Rückgabewert von Funktionen
195
9.16 Die Hauptfunktion »main()«
197
9.17 Rückgabewert beim Beenden eines Programms
199
9.17.1 Programmende auswerten
200
9.18 Funktionen der Laufzeitbibliothek
202
9.19 Getrenntes Kompilieren von Quelldateien
203
9.20 Rekursive Funktionen (Rekursion)
206
9.20.2 Rekursionen und der Stack
206
9.20.4 Fibonacci-Zahlen
212
9.20.5 Größter gemeinsamer Teiler (GGT)
213
9.21 »inline«-Funktionen
217
15.1 Struktur deklarieren
399
15.2 Initialisierung und Zugriff auf Strukturen
401
15.3 Strukturen als Wertübergabe an eine Funktion
408
15.4 Strukturen als Rückgabewert einer Funktion
410
15.5 Strukturen vergleichen
412
15.6 Arrays von Strukturen
413
15.7 Strukturen in Strukturen (Nested Structures)
420
15.8 Kurze Zusammenfassung zu den Strukturen
430
15.10 Der Aufzählungstyp »enum«
436
15.11 Typendefinition mit »typedef«
439
15.12 Attribute von Strukturen verändern (nicht ANSI C)
443
15.14 Das »offsetof«-Makro
453
16 Ein-/Ausgabe-Funktionen
455
16.1 Was ist eine Datei?
455
16.2 Formatierte und unformatierte Ein-/Ausgabe
455
16.3 Standard-Streams
456
16.4 Höhere Ein-/Ausgabe-Funktionen
456
16.5 Datei (Stream) öffnen – »fopen«
457
16.5.1 Modus für »fopen()«
460
16.5.2 Maximale Anzahl geöffneter Dateien – »FOPEN_MAX«
463
16.6 Zeichenweise lesen und schreiben – »getchar()« und »putchar()«
464
16.6.1 Ein etwas portableres »getch()«
466
16.7 Zeichenweise lesen und schreiben – »putc()«/»fputc()« und »getc()«/»fgetc()«
468
16.8 Datei (Stream) schließen – »fclose()«
474
16.9 Formatiertes Einlesen/Ausgeben von Streams mit »fprintf()« und »fscanf()«
477
16.10 Standard-Streams in C
482
16.10.1 Standard-Streams umleiten
482
16.11 Fehlerbehandlung von Streams – »feof()«, »ferror()« und »clearerr()«
485
16.12 Gelesenes Zeichen in die Eingabe zurückschieben – »ungetc()«
487
16.13 (Tastatur-)Puffer leeren – »fflush()«
489
16.14 Stream positionieren – »fseek()«, »rewind()« und »ftell()«
490
16.15 Stream positionieren – »fsetpos()«, »fgetpos()«
494
16.16 Zeilenweise Ein-/Ausgabe von Streams
496
16.16.1 Zeilenweise lesen mit »gets()«/»fgets()«
496
16.16.2 Zeilenweise schreiben mit »puts()«/»fputs()«
499
16.16.3 Zeilenweise vom Stream einlesen mit »getline()« (nicht ANSI C)
500
16.16.4 Rezepte für zeilenweises Einlesen und Ausgeben
502
16.17 Blockweise lesen und schreiben – »fread()« und »fwrite()«
509
16.17.1 Blockweise lesen – »fread()«
510
16.17.2 Blockweise schreiben – »fwrite()«
512
16.17.3 Big Endian und Little Endian
517
16.18 Datei (Stream) erneut öffnen – »freopen()«
519
16.19 Datei löschen oder umbenennen – »remove()« und »rename()«
521
16.20 Pufferung einstellen – »setbuf()« und »setvbuf()«
523
16.20.1 Die Funktion »setbuf()«
524
16.20.2 Die Funktion »setvbuf()«
528
16.21 Temporäre Dateien erzeugen – »tmpfile()« und »tmpnam()«
530
16.21.1 »mkstemp()« – sichere Alternative für Linux/UNIX (nicht ANSI C)
534
16.22 Fehlerbehandlung
535
16.22.1 Fehlerausgabe mit »perror()«
536
16.22.2 Fehlerausgabe mit »strerror()«
537
16.23 Formatiert in einen String schreiben und formatiert aus einem String lesen – »sscanf()« und »sprintf()«
539
16.24 Byte- und wide-orientierter Stream
542
16.25 Ein fortgeschrittenes Thema
544
16.26 Low-Level-Datei-I/O-Funktionen (nicht ANSI C)
552
16.26.1 Datei öffnen – »open()«
553
16.26.2 Datei schließen – »close()«
559
16.26.3 Datei erzeugen – »creat()«
560
16.26.4 Schreiben und Lesen – »write()« und »read()«
561
16.26.5 File-Deskriptor positionieren – »lseek()«
571
16.26.6 File-Deskriptor von einem Stream – »fileno()«
572
16.26.7 Stream von File-Deskriptor – »fdopen()«
574