[Login] [Registrieren] [Passwort vergessen] 07











Geprüfter Online-Shop
Galileo Computing. Wissen, wie’s geht.


Zum Buch C von A bis Z C von A bis Z
978-3-89842-392-2
Inhaltsverzeichnis

1 ... Einstieg in C ... 21

1.1 ... Historische Entwicklung ... 23
1.2 ... Der ANSI C-Standard ... 23
1.3 ... Der Vorteil des ANSI C- Standards ... 23
1.4 ... Vor- und Nachteile der Programmiersprache C ... 24
1.5 ... C in diesem Buch ... 24

2 ... Was benötige ich, um C zu lernen? 25

2.1 ... Texteditor ... 27
2.2 ... Compiler ... 27
2.3 ... All-in-one – die Entwicklungsumgebung ... 27
2.4 ... Welcher Compiler und welches Betriebssystem ... 28

3 ... Das erste Programm ... 29

3.1 ... Der beste Lernerfolg ... 31
3.2 ... »Hallo Welt« in C ... 31
3.3 ... Analyse des Programms ... 33

4 ... Zeichensätze ... 35

4.1 ... Basic-Zeichensatz ... 37
4.2 ... Ausführungszeichensatz (Steuerzeichen) 37

5 ... Kommentare in C ... 41

5.1 ... Wann sind Kommentare sinnvoll? 43
5.2 ... Die Kommentar-Schreibweisen // oder /* */ 44

6 ... Formatierte Eingabe mit scanf () 45

6.1 ... Der Adressoperator »&« 48
6.2 ... Probleme und deren Behandlung mit scanf() 49
6.2.1 ... Möglichkeit 1 50
6.2.2 ... Möglichkeit 2 51
6.2.3 ... Möglichkeit 3 51
6.3 ... Überprüfen auf das richtige Format ... 52
6.4 ... Zusammenfassung scanf() 53

7 ... Formatierte Ausgabe mit printf ... 55

8 ... Elementare Datentypen ... 59

8.1 ... Der Datentyp int (Integer) 61
8.2 ... Variablen deklarieren ... 62
8.2.1 ... Erlaubte Bezeichner ... 64
8.3 ... C versus C++ bei der Deklaration von Variablen ... 65
8.4 ... Der Datentyp long ... 65
8.5 ... Der Datentyp short ... 66
8.6 ... Die Gleitpunkttypen float und double ... 67
8.6.1 ... Gleitpunkttypen im Detail ... 68
8.6.2 ... float im Detail ... 69
8.6.3 ... double im Detail ... 69
8.6.4 ... long double ... 70
8.6.5 ... Einiges zu n-stelliger Genauigkeit ... 70
8.7 ... Numerische Gleitpunktprobleme ... 71
8.8 ... Der Datentyp char ... 72
8.9 ... Nationale contra internationale Zeichensätze ... 77
8.10 ... Vorzeichenlos und vorzeichenbehaftet ... 78
8.11 ... Limits für Ganzzahl- und Gleitpunktdatentypen ... 79
8.12 ... Konstanten ... 82
8.12.1 ... Ganzzahlkonstanten ... 82
8.12.2 ... Gleitpunktkonstanten ... 82
8.12.3 ... Zeichenkonstanten ... 83
8.12.4 ... String-Literale (Stringkonstante) 83
8.13 ... Umwandlungsvorgaben für formatierte Ein-/Ausgabe ... 83

9 ... Operatoren ... 89

9.1 ... Exkurs zu Operatoren ... 91
9.2 ... Arithmetische Operatoren ... 92
9.2.1 ... Dividieren von Ganzzahlen ... 93
9.3 ... Erweiterte Darstellung arithmetischer Operatoren ... 94
9.4 ... Inkrement- und Dekrement- Operatoren ... 95
9.5 ... Bit-Operatoren ... 97
9.5.1 ... Bitweises UND ... 97
9.5.2 ... Bitweises ODER ... 99
9.5.3 ... Bitweise XOR ... 99
9.5.4 ... Bitweises Komplement ... 100
9.5.5 ... Linksverschiebung ... 101
9.5.6 ... Rechtsverschiebung ... 102
9.5.7 ... Rezept für Fortgeschrittene ... 102
9.6 ... sizeof-Operator ... 103
9.6.1 ... C versus C++ 105

10 ... Typenumwandlung ... 107

11 ... Kontrollstrukturen ... 111

11.1 ... Verzweigungen mit der if- Bedingung ... 113
11.1.1 ... Anweisungsblock ... 113
11.2 ... Die Verzweigung mit else if ... 117
11.3 ... Die Verzweigung mit else ... 119
11.4 ... Der !-Operator (logischer Operator) 122
11.5 ... Logisches UND (&&) – Logisches ODER (||) 124
11.6 ... Bedingungsoperator ?: 126
11.7 ... Fallunterscheidung: die switch- Verzweigung ... 128
11.7.1 ... default ... 130
11.8 ... Die while-Schleife ... 131
11.8.1 ... Endlosschleife (while) 133
11.8.2 ... Fehlervermeidung bei while Schleifen ... 134
11.9 ... Die do while-Schleife ... 135
11.10 ... Die for-Schleife ... 139
11.10.1 ... Beispiele für eine for- Schleife ... 141
11.11 ... Kontrollierte Sprünge ... 144
11.11.1 ... continue ... 144
11.11.2 ... break ... 145
11.12 ... Direkte Sprünge mit goto ... 146
11.13 ... Notationsstil ... 147

12 ... Funktionen ... 149

12.1 ... Was sind Funktionen? 151
12.2 ... Wozu Funktionen? 151
12.3 ... Definition von Funktionen ... 151
12.4 ... Funktionsaufruf ... 152
12.5 ... Funktionsdeklaration ... 153
12.6 ... Lokale Variablen ... 155
12.7 ... Globale Variablen ... 157
12.8 ... Statische Variablen ... 158
12.9 ... Schlüsselworte für Variablen – Speicherklassen ... 159
12.9.1 ... auto ... 159
12.9.2 ... extern ... 160
12.9.3 ... register ... 160
12.9.4 ... static ... 160
12.10 ... Typ-Qualifizierer ... 160
12.10.1 ... volatile ... 160
12.10.2 ... const ... 161
12.11 ... Geltungsbereich von Variablen ... 161
12.12 ... Speicherklassen-Spezifizierer für Funktionen ... 162
12.12.1 ... extern ... 162
12.12.2 ... static ... 162
12.12.3 ... volatile ... 163
12.13 ... Datenaustausch zwischen Funktionen ... 163
12.14 ... Funktion mit Wertübergabe (call-by-value) 164
12.15 ... Rückgabewert von Funktionen ... 167
12.16 ... Die Hauptfunktion main() 168
12.17 ... Funktionen der Laufzeitbibliothek ... 170
12.18 ... Getrenntes Kompilieren von Quelldateien ... 171
12.19 ... Rekursive Funktionen ... 173
12.19.1 ... Exkurs: Stack ... 173
12.19.2 ... Rekursionen und der Stack ... 173
12.19.3 ... Fakultät ... 178
12.19.4 ... Spiegeln eines Textes ... 178
12.19.5 ... Fibonacci-Zahlen ... 179
12.19.6 ... Größter gemeinsamer Teiler (GGT) 179
12.19.7 ... Dezimalzahl zu Dualzahl ... 182

13 ... Präprozessor-Direktiven ... 185

13.1 ... Einkopieren von Dateien mittels #include ... 187
13.2 ... Makros und Konstanten – #define ... 190
13.2.1 ... Symbolische Konstanten mit #define ... 190
13.2.2 ... Makros mit #define ... 194
13.3 ... Bedingte Kompilierung ... 197
13.4 ... Vordefinierte Präprozessor- Direktiven (ANSI C) 202
13.5 ... Ersetzung eines Makroparameters durch einen String ... 203
13.6 ... #undef – Makronamen wieder aufheben ... 204
13.7 ... Ausgeben von Fehlermeldungen – #error ... 204
13.8 ... #pragma ... 205

14 ... Arrays ... 207

14.1 ... Arrays deklarieren ... 209
14.2 ... Initialisierung und Zugriff auf Arrays ... 210
14.2.1 ... Gültigkeitsbereich von Arrays ... 214
14.3 ... Arrays vergleichen ... 215
14.4 ... Anzahl der Elemente eines Arrays ermitteln ... 217
14.5 ... Übergabe von Arrays an Funktionen ... 218
14.6 ... Arrays aus Funktionen zurückgeben ... 219
14.7 ... Programmbeispiel zu den Arrays ... 220
14.8 ... Einlesen von Array-Werten ... 223
14.9 ... Mehrdimensionale Arrays ... 223
14.10 ... Mehrdimensionale Arrays initialisieren ... 224
14.10.1 ... Tic Tac Toe ... 231
14.10.2 ... Dreidimensionale Arrays ... 235
14.11 ... Arrays in Tabellenkalkulation einlesen (*.CSV-Dateien) 236
14.12 ... Strings/Zeichenketten (char Array) 237
14.12.1 ... Vom String zur Binärzahl ... 240
14.13 ... Einlesen von Strings ... 242
14.14 ... Standard-Bibliothek <string.h> 244
14.14.1 ... strcat() – Strings aneinander hängen ... 245
14.14.2 ... strchr() – ein Zeichen im String suchen ... 245
14.14.3 ... strcmp() – Strings vergleichen ... 246
14.14.4 ... strcpy() – einen String kopieren ... 247
14.14.5 ... strcspn() – einen Teilstring ermitteln ... 247
14.14.6 ... strlen() – Länge eines Strings ermitteln ... 248
14.14.7 ... strncat() – String mit n Zeichen aneinander hängen ... 248
14.14.8 ... strncmp() – n Zeichen von zwei Strings miteinander vergleichen ... 249
14.14.9 ... strncpy() – String mit n Zeichen kopieren ... 250
14.14.10 ... strpbrk() – Auftreten bestimmter Zeichen suchen ... 250
14.14.11 ... strrchr() – das letzte Auftreten eines bestimmten Zeichens im String suchen ... 251
14.14.12 ... strspn() – erstes Auftreten eines Zeichens, das nicht vorkommt ... 251
14.14.13 ... strstr() – String nach Auftreten eines Teilstrings durchsuchen ... 252
14.14.14 ... strtok() – String anhand bestimmter Zeichen zerlegen ... 252

15 ... Zeiger (Pointer) 255

15.1 ... Zeiger deklarieren ... 257
15.2 ... Zeiger initialisieren ... 258
15.2.1 ... Speichergröße von Zeigern ... 268
15.3 ... Zeigerarithmetik ... 268
15.4 ... Zeiger, die auf andere Zeiger verweisen ... 269
15.4.1 ... Subtraktion zweier Zeiger ... 270
15.5 ... Typensicherung bei der Dereferenzierung ... 271
15.6 ... Zeiger als Funktionsparameter (call-by-reference) 271
15.6.1 ... Zeiger als Rückgabewert ... 274
15.7 ... Array und Zeiger ... 276
15.8 ... Zeiger auf Strings ... 281
15.8.1 ... Zeiger auf konstante Objekte (Read-only-Zeiger) 282
15.9 ... Zeiger auf Zeiger und Stringtabellen ... 282
15.9.1 ... Stringtabellen ... 283
15.10 ... Zeiger auf Funktionen ... 290
15.11 ... void-Zeiger ... 295
15.12 ... Äquivalenz zwischen Zeigern und Arrays ... 297

16 ... Kommandozeilenargumente ... 301

16.1 ... Argumente an die Hauptfunktion ... 303
16.2 ... Optionen (Schalter) aus der Kommandozeile auswerten ... 308

17 ... Dynamische Speicherverwaltung ... 317

17.1 ... Das Speicherkonzept ... 319
17.2 ... Speicherallozierung mit malloc () 320
17.2.1 ... NULL-Zeiger bei der Speicherreservierung ... 323
17.2.2 ... Möglichkeiten der Speicherreservierung und ihre Probleme ... 323
17.2.3 ... free() – Speicher wieder freigeben ... 324
17.3 ... Die Freispeicherverwaltung ... 326
17.3.1 ... Prozessinterne Freispeicherverwaltung ... 327
17.4 ... Dynamisches Array ... 329
17.5 ... Speicher dynamisch reservieren mit realloc und calloc ... 333
17.6 ... Speicher vom Stack anfordern mit alloca (nicht ANSI C) 336
17.7 ... free – Speicher wieder freigeben ... 337
17.8 ... Zweidimensionale dynamische Arrays ... 337
17.9 ... Wenn die Speicherallozierung fehlschlägt ... 340
17.9.1 ... Speicheranforderung reduzieren ... 341
17.9.2 ... Speicheranforderungen aufteilen ... 342
17.9.3 ... Einen Puffer konstanter Größe verwenden ... 343
17.9.4 ... Zwischenspeichern auf Festplatte vor der Allozierung ... 343
17.9.5 ... Nur so viel Speicher anfordern wie nötig ... 343

18 ... Strukturen ... 345

18.1 ... Struktur deklarieren ... 347
18.2 ... Initialisierung und Zugriff auf Strukturen ... 348
18.3 ... Strukturen als Wertübergabe an eine Funktion ... 352
18.4 ... Strukturen als Rückgabewert einer Funktion ... 354
18.5 ... Strukturen vergleichen ... 356
18.6 ... Arrays von Strukturen ... 357
18.7 ... Strukturen in Strukturen (Nested Structurs) 363
18.8 ... Kurze Zusammenfassung zu den Strukturen ... 372
18.9 ... Union ... 373
18.10 ... Aufzählungstyp enum ... 377
18.11 ... Typendefinition mit typedef ... 379
18.12 ... Attribute von Strukturen verändern (nicht ANSI C) 383
18.13 ... Bitfelder ... 386
18.14 ... Differenzen zwischen C und C++ (Strukturen) 391
18.15 ... Das offsetof-Makro ... 393

19 ... Ein-/Ausgabe-Funktionen ... 395

19.1 ... Was ist eine Datei? 397
19.2 ... Formatierte und unformatierte Ein-/Ausgabe ... 397
19.3 ... Streams ... 397
19.4 ... Höhere Ein-/Augabe- Funktionen ... 398
19.5 ... Datei (Stream) öffnen – fopen ... 399
19.5.1 ... Modus für fopen() 401
19.5.2 ... Maximale Anzahl geöffneter Dateien – FOPEN_MAX ... 403
19.6 ... Zeichenweises Lesen und Schreiben – getchar und putchar ... 404
19.6.1 ... Ein etwas portableres getch() 406
19.7 ... Zeichenweises Lesen und Schreiben – putc/fputc und getc/fgetc ... 407
19.8 ... Datei (Stream) schließen – fclose ... 412
19.9 ... Formatiertes Einlesen/Ausgeben von Streams mit fprintf und fscanf ... 415
19.10 ... Standard-Streams in C ... 419
19.10.1 ... Standard-Streams umleiten ... 420
19.11 ... Fehlerbehandlung von Streams – feof, ferror und clearerr ... 422
19.12 ... Gelesenes Zeichen in die Eingabe zurückschieben – ungetc ... 423
19.13 ... (Tastatur-)Puffer leeren – fflush ... 424
19.13.1 ... Pufferung ... 425
19.14 ... Stream positionieren – fseek, rewind und ftell ... 426
19.15 ... Stream positionieren – fsetpos, fgetpos ... 429
19.16 ... Zeilenweise Ein-/Ausgabe von Streams ... 431
19.16.1 ... Zeilenweise lesen mit gets und fgets ... 431
19.16.2 ... Zeilenweise schreiben mit puts und fputs ... 434
19.16.3 ... Zeilenweise einlesen vom Stream mit getline() (nicht ANSI C) 435
19.16.4 ... Rezepte für zeilenweises Einlesen und Ausgeben ... 436
19.17 ... Blockweises Lesen und Schreiben – fread und fwrite ... 443
19.17.1 ... Blockweises Lesen – fread() 444
19.17.2 ... Blockweises Schreiben – fwrite() 445
19.17.3 ... Big-Endian und Little- Endian ... 450
19.18 ... Datei (Stream) erneut öffnen – freopen ... 452
19.19 ... Datei löschen oder umbenennen – remove und rename ... 453
19.19.1 ... remove() 453
19.19.2 ... rename() 455
19.20 ... Pufferung einstellen – setbuf und setvbuf ... 455
19.21 ... Temporäre Dateien erzeugen – tmpfile und tmpnam ... 461
19.22 ... Fehlerausgabe mit strerror und perror ... 465
19.23 ... Formatiert in einen String schreiben und formatiert aus einem String lesen – sscanf und sprintf ... 468
19.24 ... Fortgeschrittenes Thema ... 471
19.25 ... Low-Level-Datei-I/O- Funktionen (nicht ANSI C) 479
19.26 ... Datei öffnen – open ... 479
19.27 ... Datei schließen – close ... 484
19.28 ... Datei erzeugen – creat ... 485
19.29 ... Schreiben und Lesen – write und read ... 486
19.30 ... File-Deskriptor positionieren – lseek ... 495
19.31 ... File-Deskriptor von einem Stream – fileno ... 496
19.32 ... Stream von File-Deskriptor – fdopen ... 497

20 ... Attribute von Dateien und Arbeiten mit Verzeichnissen (nicht ANSI C) 499

20.1 ... Attribute einer Datei ermitteln – stat() 501
20.1.1 ... stat() – st_mode ... 502
20.1.2 ... stat() – st_size ... 507
20.1.3 ... stat() – st_atime, st_mtime und st_ctime ... 509
20.1.4 ... stat() – st_gid und st_uid ... 513
20.1.5 ... stat() – st_nlink und st_ino ... 513
20.1.6 ... stat() – st_dev und st_rdev ... 514
20.2 ... Prüfen des Zugriffsrechts – access ... 516
20.3 ... Verzeichnis-Funktionen ... 519
20.3.1 ... Verzeichnis erstellen, löschen und wechseln – mkdir, rmdir und chdir ... 519
20.3.2 ... Wechseln in das Arbeitsverzeichnis – getcwd ... 523
20.3.3 ... Verzeichnisse öffnen, lesen und schließen – opendir, readdir und closedir ... 525

21 ... Arbeiten mit variablen langen Argumentlisten – <stdarg.h> 531

21.1 ... Makros in <stdarg.h> – va_list, va_arg, va_start und va_end ... 533
21.2 ... Argumentliste am Anfang oder Ende kennzeichnen ... 534
21.3 ... vprintf, vsprintf und vfsprintf ... 538

22 ... Zeitroutinen ... 541

22.1 ... Die Headerdatei <time.h> 543
22.1.1 ... Konstanten in der Headerdatei <time.h> 544
22.1.2 ... Datums – und Zeitfunktionen in <time.h> 544
22.2 ... Laufzeitmessung (Profiling) 553

23 ... Weitere Headerdateien und ihre Funktionen (ANSI C) 555

23.1 ... <assert.h> – Testmöglichkeiten und Fehlersuche ... 557
23.2 ... <ctype.h> – Zeichenklassifizierung und Umwandlung ... 558
23.3 ... Mathematische Funktionen – <math.h> 561
23.4 ... <stdlib.h> 563
23.4.1 ... Programmbeendigung – exit(), _exit(), atexit() und abort() 563
23.4.2 ... Konvertieren von Strings in numerische Werte ... 565
23.4.3 ... Zufallszahlen ... 569
23.4.4 ... Absolutwerte, Quotient und Rest von Divisionen ... 570
23.4.5 ... Suchen und Sortieren – qsort () und bsearch() 572
23.4.6 ... system() 574
23.5 ... <setjmp.h> 575
23.6 ... <signal.h> 579
23.7 ... <string.h> – Die mem…- Funktionen zur Speichermanipulation ... 584
23.7.1 ... memchr() – Suche nach einzelnen Zeichen ... 584
23.7.2 ... memcmp() – Bestimmte Anzahl von Bytes vergleichen ... 584
23.7.3 ... memcpy() – Bestimmte Anzahl von Bytes kopieren ... 585
23.7.4 ... memmove() – Bestimmte Anzahl von Bytes kopieren ... 585
23.7.5 ... memset() – Speicherbereich mit bestimmten Zeichen auffüllen ... 586
23.8 ... Erweiterter ANSI C-Standard (ANSI C99) 586
23.8.1 ... Neue elementare Datentypen ... 587
23.8.2 ... <stdint.h> – Ganzzahlige Typen mit vorgegebener Breite ... 587
23.8.3 ... Komplexe Gleitpunkttypen ... 588
23.8.4 ... <iso646.h> – Symbolische Konstanten für Operatoren ... 588
23.8.5 ... Deklaration von Bezeichnern ... 588
23.8.6 ... inline-Funktionen ... 588
23.8.7 ... Vordefinierte Makros ... 589
23.8.8 ... <math.h> – Neue Funktionen ... 590
23.8.9 ... Zusammenfassung ... 592

24 ... Dynamische Datenstrukturen ... 593

24.1 ... Lineare Listen (einfach verkettete Listen) 595
24.1.1 ... Erstes Element der Liste löschen ... 601
24.1.2 ... Beliebiges Element in der Liste löschen ... 602
24.1.3 ... Elemente der Liste ausgeben ... 605
24.1.4 ... Eine vollständige Liste auf einmal löschen ... 610
24.1.5 ... Element in die Liste einfügen ... 612
24.2 ... Doppelt verkettete Listen ... 618
24.3 ... Stacks nach dem LIFO(Last-in- First-out)-Prinzip ... 634
24.4 ... Queues nach dem FIFO- Prinzip ... 653

25 ... Algorithmen ... 661

25.1 ... Was sind Algorithmen? 663
25.2 ... Wie setze ich Algorithmen ein? 663
25.3 ... Sortieralgorithmen ... 663
25.3.1 ... Selektion Sort – Sortieren durch Auswählen ... 664
25.3.2 ... Insertion Sort ... 666
25.3.3 ... Bubble Sort ... 668
25.3.4 ... Shellsort ... 669
25.3.5 ... Quicksort ... 672
25.3.6 ... qsort() 678
25.3.7 ... Zusammenfassung der Sortieralgorithmen ... 679
25.4 ... Code optimieren ... 686
25.4.1 ... Lokale Variablen ... 687
25.4.2 ... Funktionsaufrufe ... 687
25.4.3 ... Datentypen ... 687
25.4.4 ... Schleifen ... 687
25.4.5 ... Kontrollstrukturen ... 688
25.4.6 ... Verschiedenes ... 689
25.5 ... Suchalgorithmen – Grundlage zur Suche ... 689
25.5.1 ... Lineare Suche ... 690
25.5.2 ... Binäre Suche ... 692
25.5.3 ... Binäre (Such-)Bäume ... 694
25.5.4 ... Elemente im binären Baum einordnen ... 696
25.5.5 ... Binäre Bäume travesieren ... 700
25.5.6 ... Löschen eines Elements im binären Baum ... 701
25.5.7 ... Ein binärer Suchbaum in der Praxis ... 703
25.5.8 ... Binäre Suchbäume mit Eltern- Zeiger und Threads ... 712
25.5.9 ... Ausgeglichene Binärbäume ... 713
25.5.10 ... Algorithmen für ausgeglichene Bäume – eine Übersicht ... 714
25.6 ... Hashing (Zerhacken) 715
25.6.1 ... Wann wird Hashing verwendet? 715
25.6.2 ... Was ist für das Hashing erforderlich? 715
25.6.3 ... Hash-Funktion ... 720
25.6.4 ... Hashing mit direkter Adressierung ... 723
25.6.5 ... Vergleich von Hashing mit binären Bäumen ... 724
25.7 ... String Matching ... 724
25.7.1 ... Brute-Force-Algorithmus ... 725
25.7.2 ... Der Algorithmus von Knuth, Morris und Pratt (KMP) 727
25.7.3 ... Weitere String Matching- Algorithmen ... 734
25.8 ... Pattern Matching (reguläre Ausdrücke) 734

26 ... Sicheres Programmieren ... 741

26.1 ... Buffer Overflow (Speicherüberlauf) 744
26.1.1 ... Speicherverwaltung von Programmen ... 745
26.1.2 ... Der Stack-Frame ... 746
26.1.3 ... Rücksprungadresse manipulieren ... 747
26.1.4 ... Gegenmaßnahmen zum Buffer Overflow während der Programmerstellung ... 752
26.1.5 ... Gegenmaßnahmen zum Buffer Overflow, wenn das Programm fertig ist ... 754
26.1.6 ... Programme und Tools zum Buffer Overflow ... 757
26.1.7 ... Ausblick ... 758
26.2 ... Memory Leaks (Speicherlecks) 758
26.2.1 ... Bibliotheken und Tools zu Memory Leaks ... 761
26.3 ... Tipps zu Sicherheitsproblemen ... 763

27 ... CGI mit C ... 765

27.1 ... Was ist CGI? 767
27.2 ... Vorteile von CGIs in C ... 768
27.3 ... Andere Techniken der Webprogrammierung ... 768
27.4 ... Das dreistufige Webanwendungsdesign ... 768
27.4.1 ... Darstellungsschicht ... 768
27.4.2 ... Verarbeitungsschicht ... 769
27.4.3 ... Speicherschicht ... 770
27.5 ... Clientseitige Programmierung ... 770
27.5.1 ... JavaScript ... 770
27.5.2 ... Java-Applets ... 770
27.6 ... Serverseitige Programmierung ... 771
27.7 ... Der Webserver ... 771
27.7.1 ... Das Client/Server-Modell des Internets ... 771
27.7.2 ... Serverimplementierung ... 772
27.7.3 ... Hosting-Services ... 773
27.7.4 ... Schlüsselfertige Lösung ... 773
27.7.5 ... Weitere Möglichkeiten ... 773
27.7.6 ... Apache ... 774
27.8 ... Das HTTP-Protokoll ... 783
27.8.1 ... Web-Protokolle ... 783
27.8.2 ... Wozu Protokolle? 783
27.8.3 ... Was ist ein Protokoll? 783
27.8.4 ... Normen für die Netzwerktechnik ... 784
27.8.5 ... Das OSI-Schichtenmodell ... 784
27.8.6 ... Die Elemente einer URL ... 785
27.8.7 ... Client-Anfrage – HTTP Request (Browser-Request) 786
27.8.8 ... Server-Antwort (Server- Response) 789
27.8.9 ... Zusammenfassung ... 792
27.9 ... Das Common Gateway Interface (CGI) 792
27.9.1 ... Filehandles ... 792
27.9.2 ... CGI-Umgebungsvariablen ... 793
27.9.3 ... CGI-Ausgabe ... 797
27.10 ... HTML-Formulare ... 800
27.10.1 ... Die Tags und ihre Bedeutung ... 800
27.11 ... CGI-Eingabe ... 806
27.11.1 ... Die Anfrage des Clients an den Server ... 806
27.11.2 ... Eingabe parsen ... 810
27.12 ... Ein Gästebuch ... 814
27.12.1 ... Das HTML-Formular (guestbook.html) 815
27.12.2 ... Das CGI-Programm (auswert.cgi) 816
27.12.3 ... Das HTML-Gästebuch (gaeste.html) 824
27.12.4 ... Das Beispiel ausführen ... 824
27.13 ... Ausblick ... 826

28 ... MySQL und C ... 827

28.1 ... Aufbau eines Datenbanksystems ... 829
28.1.1 ... Warum wurde ein Datenbanksystem (DBS) entwickelt? 829
28.1.2 ... Das Datenbank-Management- System (DBMS) 830
28.1.3 ... Relationale Datenbank ... 832
28.1.4 ... Eigene Clients mit C für SQL mit der ODBC-API entwickeln ... 832
28.2 ... MySQL installieren ... 833
28.2.1 ... Linux ... 833
28.2.2 ... Windows ... 833
28.2.3 ... Den Client mysql starten ... 834
28.3 ... Crashkurs (My)SQL ... 835
28.3.1 ... Was ist SQL? 835
28.3.2 ... Die Datentypen von (My) SQL ... 835
28.3.3 ... Eine Datenbank erzeugen ... 837
28.3.4 ... Eine Datenbank löschen ... 838
28.3.5 ... Datenbank wechseln ... 839
28.3.6 ... Eine Tabelle erstellen ... 839
28.3.7 ... Die Tabelle anzeigen ... 840
28.3.8 ... Tabellendefinition überprüfen ... 840
28.3.9 ... Tabelle löschen ... 840
28.3.10 ... Struktur einer Tabelle ändern ... 841
28.3.11 ... Datensätze eingeben ... 841
28.3.12 ... Datensätze auswählen ... 842
28.3.13 ... Ein fortgeschrittenes Szenario ... 843
28.3.14 ... Datensatz löschen ... 844
28.3.15 ... Datensatz ändern ... 844
28.3.16 ... Zugriffsrechte in MySQL ... 844
28.3.17 ... Übersicht über einige SQL- Kommandos ... 845
28.4 ... Die MySQL C-API ... 847
28.4.1 ... Grundlagen zur Programmierung eines MySQL-Clients ... 847
28.4.2 ... Client-Programm mit dem gcc- unter Linux und dem Cygwin gcc-Compiler unter Windows ... 848
28.4.3 ... MySQL Client-Programme mit dem VC++-Compiler und dem Borland Freeware Compiler ... 849
28.4.4 ... Troubleshooting ... 850
28.4.5 ... Das erste Client-Programm – Verbindung mit dem MySQL-Server herstellen ... 851
28.4.6 ... MySQL-Kommandozeilen- Optionen ... 855
28.4.7 ... Anfrage an den Server ... 857
28.5 ... MySQL und C mit CGI ... 873
28.5.1 ... HTML-Eingabeformular ... 874
28.5.2 ... CGI-Anwendung add_db.cgi ... 875
28.5.3 ... CGI-Anwendung search_db.cgi ... 882
28.6 ... Funktionsübersicht ... 890
28.7 ... Datentypenübersicht der C- API ... 893

29 ... Wie geht’s jetzt weiter? 895

A ... Anhang ... 899

A.1 ... Rangfolge der Operatoren ... 901
A.2 ... ASCII-Code-Tabelle ... 903
A.3 ... Reservierte Schlüsselwörter in C ... 904
A.4 ... Standard-Headerdateien der ANSI C-Bibliothek ... 904
A.5 ... Weiterführende Links ... 904
A.6 ... Weiterführende Literatur ... 904
A.6.1 ... Bücher zum ANSI C- Standard ... 905
A.6.2 ... Algorithmen und Datenstrukturen ... 905
A.6.3 ... HTML, CGI- Webprogrammierung ... 905
A.6.4 ... Linux/UNIX ... 906
A.6.5 ... MySQL ... 906

Index ... 907


Zurück zu »C von A bis Z«
 
Unser Buchtipp
VMware ESX 4
VMware ESX 4
 

Bestseller
Joomla! 1.5
Windows Server 2008 R2
Windows Presentation Foundation
xt:Commerce
VMware vSphere 4
[weitere]
 

Neue Bücher
VMware ESX 4
Visual C# 2010
Grundkurs C: C-Programmierung verständlich erklärt
Oracle PL/SQL
Silverlight 4
[weitere]
 

 

 
 





[Login] [Registrieren] [Passwort vergessen]
[Galileo Computing]  [Galileo Design]  [SAP PRESS]
[Galileo Press][Galileo Press Inc.]

Galileo Press GmbH – Geschäftsführer Tomas Wehren, Ralf Kaulisch, Rainer Kaltenecker – Rheinwerkallee 4 – 53227 Bonn
Tel. +49.228.42150.0 – Fax +49.228.42150.77
info@galileo-press.dewebmaster@galileo-press.de

Copyright © Galileo Press GmbH 1999 – 2010
[AGB & Widerrufsbelehrung] [Datenschutz] [Impressum]

Realisiert mit
Zope, MySQL, qmail, djbdns