C erfreut sich als Klassiker unter den Programmiersprachen großer Beliebtheit, denn es steckt nach wie vor in vielen Betriebssystemen, Schnittstellen und Treibern, aber auch in Compilern und neueren eingebetteten Systemen. Wer C lernen und dabei auch noch Spaß haben möchte, sollte zu diesem Buch vom Urvater der Dummies, Dan Gookin, greifen. Mit viel Humor und vielen anschaulichen Beispielen macht er die Programmiersprache C lebendig.
Inhaltsverzeichnis
Ü ber den Autor 11
Einleitung 29
Was bringt es, C zu lernen? 29
Ü ber dieses Buch 30
Programme in diesem Buch 30
Tö richte Annahmen ü ber den Leser 31
Wie dieses Buch aufgebaut ist 32
Teil I: Das erste Programm 32
Teil II: Grundlegendes Sprachverstä ndnis 32
Teil III: Einfache Datenstrukturen und Zeiger 32
Teil IV: Daten speichern und verwalten 32
Teil V: Der Top-Ten-Teil 32
Symbole, die in diesem Buch verwendet werden 33
Schlussgedanken 33
Teil I: Das erste Programm 35
Kapitel 1 In zehn Schritten zum ersten Compiler 37
Die Installation der IDE 37
Code::Blocks installieren 38
Die Compilereinstellungen 40
Ihr erstes Programm 43
Welches C hä tten Sie gern? 43
An die Tastatur! 44
Den C-Code eingeben 46
Ihr Programm erstellen 48
Ihr Programm ausfü hren 48
Ein Wort zu Code::Blocks und Spenden 49
Kapitel 2 Der (zumeist harmlose) Einstieg 51
Die kurze und banale Geschichte von C 51
Wie aus einer sü ß en kleinen Textdatei ein Programm wird 52
Der Entwicklungsprozess in C 53
Der Quelltext (oder auch Sourcecode) 54
Der Compiler 54
Der Linker 56
Das erste C-Programm - eine alte Tradition 56
Speichern! Kompilieren! Linken! Starten! 57
Die notwendigen Editier- und Kompilierkü nste 58
Die Quelltextdatei ä ndern 59
Neukompilierung (oder: Spiel s nochmal in der Sprache C) 60
Raus mit den alten Sachen, lasst uns was Neues machen 60
Mit Fehlern auf Du und Du 61
Mist! Ein Fehler Aber bevor Sie aus dem Fenster springen . . . 61
Junge, was n Fehler! 63
Das fehlerhafte Programm reparieren 64
Die fü rchterlichen Linkerfehler 65
Linkerfehler beheben 66
Wie die Sprache C aussieht 67
Der groß e Zusammenhang 67
Stü ckliste 69
Die Sprache C mit ihren Schlü sselwö rtern 70
Andere Sprachelemente von C 71
Eingaben und Ausgaben (die hier mal was Gutes sind) 72
Stellen Sie sich bei Herrn Computer vor 72
Die Belohnung! 73
Erst das Chaos, dann die Ordnung 75
Der C-Compiler rä umt sein Zimmer nicht auf 75
Was aufheben, was wegwerfen? 75
Organisation ist alles! 76
Wichtige C-Regeln, an die Sie nie denken werden 77
Das hilfreiche Regelprogramm 77
Zeit fü r eine Bonusrunde 78
Kapitel 3 Einfache C-Programme basteln 81
printf (wer bei print an Drucken denkt, liegt falsch) 81
Ein anderes 'printf macht was Lustiges'-Programm 82
Noch mehr lustige Texte 83
Einige Escape-Sequenzen 85
Das f steht fü r formatiert 85
Richt Euch! 86
scanf - lassen Sie Ihren Scanner trotzdem aus! 88
scanf richtig einsetzen 89
scanf im scharfen Einsatz 91
Kleine Ä nderungen an Whoru. c 92
Das Wunder von %s 93
Zeit fü r Experimente 93
Bemerkungen, Kommentare und Vorschlä ge 95
Darf ich um einen kurzen Kommentar bitten? 95
Kommentarstile 96
Wieso sind Kommentare notwendig? 96
Bizzare Kommentare 97
Kommentare als Schalter 98
Vermeidung 'verschachtelter' Kommentare 99
fgets und puts 100
Und tschü ss scanf, willkommen fgets 101
Ein unfreundliches Programmbeispiel 101
Das finstere Geheimnis der Sprache C 101
Sichere Dateneingaben 102
put - put - putputput - puts 103
Noch eine doofe Spielerei 104
puts und Variablen 105
Licht! Kamera! Action! puts und fgets die Zweite 105
Mehr Spaß mit printf 107
Das alte 'Text mit printf ausgeben' 108
Die Escape-Sequenzen von printf 108
Das Deluxe-Testprogramm fü r Escape-Sequenzen 109
Weitere Tests mit Printfun 110
Wieder mal die Komplexitä t des printf-Formats 111
Die Konvertierungszeichen von printf 112
Kapitel 4 Variablen und Mathe 115
Die sich stä ndig ä ndernde Variable 115
Strings ä ndern sich 116
Willkommen in der Welt der numerischen Variablen 117
Benutzung der ersten Integervariablen 118
Zuweisung von Werten an numerische Variablen 119
Die Eingabe von Zahlen ü ber die Tastatur 120
Wie alt war Methusalem? 122
Mehr numerische Variablen und ein bisschen Mathe 124
Wieder auf der Jagd 124
Eine Portion Mathe 125
Wie lange brauchen Sie, um Methusalems Rekord zu brechen? 126
Methusalem: Bonusrunde! Jedes Los ein Gewinn! 127
Das unmittelbare Ergebnis 128
Diskurse, Diskussionen und die Definition von Variablen 129
'Warum muss ich eine Variable definieren?' 130
Verbotene und erlaubte Variablennamen 131
Vordefinieren von Variablen 131
Ein x-beliebiges Beispiel fü r Variablen 133
Mehrfachdeklarationen 134
Konstanten und Variablen 135
Trä ume von Freiheit und mehr Konstanz 135
Eine praktische Abkü rzung 136
Das Schlü sselwort const 137
Der dritte Weg 138
Malen mit Zahlen 140
Zahlen in C 140
Wieso nimmt man int? 142
Mit oder ohne Vorzeichen - das ist hier die Frage 142
Wie bringt man eine Zahl eigentlich zum Fließ en? 143
'Hey EIX32A, lass uns mal ein Fließ kommaprogramm schreiben!' 144
Die Sache mit der E-Notation 145
Doppelt so groß wie float? Das ist double! 147
Bringen Sie Ihren Zahlen Format bei! 148
Die etwas andere Variable: char 149
Variablen mit einzelnen Zeichen 149
Variablen mit Zeichen abfü llen 151
Kitzelt eine Tasteneingabe den Computer? 151
Zeichenvariablen als Werte 152
Die erste wirkliche Mathestunde 154
Ein sehr knapper Ü berblick ü ber die Operatoren 154
Das alte 'Wie groß bist du?'-Programm 155
Heimtü ckische Ä nderungen an unserer Grö ß enberechnung 156
Die hohe Kunst des Inkrementierens 157
Weniger lustig: Gewichtszunahme 157
Bonusprogramm! (Irgendwann nü tzt es Ihnen was) 158
Wer hat den Vortritt? 160
Ein Beispiel aus einer Examensklausur 160
Punktrechnung vor Strichrechnung 161
Klammern haben den Vortritt 162
Teil II: Grundlegendes Sprachverstä ndnis 165
Kapitel 5 Wir stehen vor einer groß en Entscheidung 167
Die mä chtige if-Anweisung 168
Der Computer als Genie 168
Das Schlü sselwort if ganz aus der Nä he 170
Eine Anmerkung zur Schreibweise der if-Anweisung 174
Die endgü ltige Lö sung fü r die Steuerproblematik 174
Gut, wenn s nicht wahr ist, was ist es dann? 176
Mit einem else alle Mö glichkeiten abdecken 176
Eine Anmerkung zur Schreibweise 179
Der Sonderfall else-if und viel mehr Entscheidungen 180
if mit Zeichen und Strings 181
Die zahlenlose Welt von if 181
Was ist grö ß er: S oder T, $ oder -? 182
if und der Vergleich von Strings 183
Wie schreibt man richtig in C? Lektion 1 183
Immer von oben nach unten 184
Formatierungen des Quellcodes 184
Einrü ckungen, Teil 2 185
Vergessen wir kurz die Formatierung 186
Andere Mö glichkeiten 186
for knü pft Schleifen 187
Wiederholte Wiederholungen 189
for formt die Schleifen 190
Wie in der Grundschule: Zä hlen bis 100 192
Schleifen fabrizieren 194
Endlich - das nü tzliche ASCII-Programm 194
Vorsicht, Endlosschleifen! 195
Schleifen gewaltsam abbrechen 197
Das Schlü sselwort break 198
Abkü rzungen und die Kunst des Inkrementierens 199
Kryptische C-Operatoren, Teil 1: ++ 199
Bahn frei, jetzt komm ich! 200
Rü ckwä rtszä hlen: nelhä z strä wkcü R 201
Rü ckwä rtszä hlen passt sehr gut zum for 202
Kryptische C-Operatoren, Teil 2: 202
Eine abschließ ende Verbesserung von Ollyolly. c 203
Je mehr Inkrement, desto mehr Wahnsinn 204
Schleifen mit Sprü ngen 204
Kryptische C-Operatoren, Teil 3: Jetzt wird's verrü ckt 205
Kapitel 6 Ihre persö nlichen Funktionen 207
Die allererste Funktion schreiben 207
Dieses Programm braucht eine Funktion 209
Die nü tzliche Funktion idiot() 210
Das Tao der Funktionen 211
Zur Namensgebung von Funktionen 212
Ein Wort zum Prototyping 213
Variablen innerhalb von Funktionen 215
Bomben frei mit dem Bomber-Programm 215
Bringt die doppelte Variable Bomber. c zur Explosion? 216
Ein weiterfü hrendes Beispiel 217
Brü derliches Teilen von Werten mithilfe globaler Variablen 219
Eine globale Variable erzeugen 219
Ein Beispiel fü r eine globale Variable 220
Funktionen ein Pä ckchen mit auf den Weg geben 222
Funktionen mit einer echten Funktion 224
Wie man einer Funktion einen Wert schickt 225
Unbedingt lesen: Variablenwirrwarr vermeiden 226
Mehr als einen Wert an eine Funktion ü bergeben 226
Wie man Strings an Funktionen ü bergibt 228
Funktionen mit Ergebnissen 230
Endlich sagt der Computer mal was Gutes ü ber Sie 231
Fehlerbeseitigung in Iq. c mit dem beliebten Typecasting-Trick 232
Mit return zurü ck an den Absender 234
Gib dem Mann mal einen Bonus! 235
Das Zwiebelschalenprinzip 237
Funktionen arbeiten von innen nach auß en 238
Verä nderungen am Programm Iq. c 239
Ein gä ngiges Beispiel fü r if 240
Das alte Spiel mit den Zufallszahlen 241
Benutzung der rand-Funktion 242
Zufallszahlen initialisieren 244
Mehr Zufall im Zufallsprogramm 245
Verbesserungen am Zufallszahlenprogramm 246
Der teuflische Dr Modulo 248
Die Wü rfel sind gefallen 250
Kapitel 7 Feinschliff fü r die C-Kü nste 253
Dieses Zeug drä ngelt sich immer vor (der Rest folgt dem #) 253
Bitte vergiss mein nicht! 254
Ihre eigene h-Datei erstellen 257
Wofü r #define gut ist 259
Makros erwä hnen wir besser erst gar nicht 260
Wie man Eingaben vom Benutzer bekommt 262
Die Tastatur abhö ren 262
Das fü rchterliche Ratespiel 263
Die Shell beklauen (wie man die Kommandozeile abhö rt) 265
Da gehen einem die Argumente aus - main passiert das nie 266
Also, irgendwelche Argumente dafü r? 267
Anzeige der Argumente 268
Wiederholungen sind gut 270
Ihr Gewicht auf dem Mond 272
Noch mehr ifs 274
Auswertung von mehreren Bedingungen in if-Abfragen 275
Wer ist schlauer? Melvin oder Poindexter? 277
Gutes p, schlechtes P 279
Weitere Weisheiten 280
Nun zu den schlechten Nachrichten 280
Mehr ü ber Variablen 281
Typecasting und andere Probleme 281
Grundlagen der Typumwandlung 282
Die lange und die kurze Form 282
Die Konfusion weicht allmä hlich 283
signed und unsigned 284
unsigned Variablen haben eine negative Einstellung 285
Faire und unfaire Variablen 286
Ein anderes Kapitel ü ber Zahlen (die Sache mit der Hexerei) 286
Zahlensysteme und ihre Basis 287
Hexereien 288
Inhaltsverzeichnis 21
Kapitel 8 Schleifen knü pfen 291
Fakten zu while-Schleifen 291
Die erste Schleife binden 292
Das Schlü sselwort while 293
Was ist besser geeignet: while oder for? 295
Tausche unschö nes for(; ;) gegen elegantes while 296
Den Spieß umgedreht: do-while-Schleifen 297
while macht Kopfstä nde - do-while 298
De-tail von do-while 300
Trau niemals dem User - ein Fehler in Countdown. c 301
Die garantiert richtige Eingabe 302
Der bizarre Fall while TRUE (und sonstige Kuriositä ten) 303
Fragestunde 303
Feintuning fü r Yorn. c 305
'Kochen, bis es gar ist' 306
Yorn. c als Funktion 307
Verschachtelte Schleifen und anderer Unsinn fü r Angeber 309
Verschachtelte Anwendungen 310
Schleifen und das heimtü ckische switch-case 311
Die Lö sung mit switch-case 313
Der alte Trick mit switch-case 315
Eine besondere Beziehung zwischen while und
switch-case 318
Kapitel 9 Zwischenstand und Reste essen 321
Selbsttest via Hallo, Welt! 321
Das Hallo-Welt-Programm 322
Weiter geht's - ein nä rrisches Hallo-Welt-Programm 322
Halt die Welt an, ich mö chte aussteigen! 323
Die Behandlung der Ü berbleibsel 326
Die Lö sung mittels while-Schleife 328
Mehr ü ber die math. h-Library 329
Die Probleme in einer hö heren Potenz 330
Autsch! Wurzeln ziehen 333
Lä stige Mathematik? - Sie packen das 334
Etwas wahrhaft Merkwü rdiges zum Schluss 335
Die Gefahren der Benutzung von a++ 336
Ja, und das Gleiche gilt fü r -- 337
Wiederholung des ++a-Phä nomens 338
goto-Anweisung - nein danke 338
Was ist nun goto? 339
Ein Beispiel, wie man goto nicht verwenden sollte 340
Alternativen zu goto 342
Und tschü ss . . . - das Programm verlassen 344
exit - der Notausgang 344
Zuletzt das berü chtigte Ask-Programm 345
Eine sinnlose Batchdatei als Beispiel 348
Teil III: Einfache Datenstrukturen und Zeiger 349
Kapitel 10 Arrays und Strings 351
Wozu Arrays? 351
Wie man Arrays benutzt 352
Ein einfaches Programm, bevor es zu langweilig wird 353
Arrays in C erstellen 354
Auf die Elemente eines Arrays zugreifen 356
Werte an ein Array zuweisen 357
Alt, aber brauchbar 359
Strings und Arrays 362
Das Ende eines Strings (das Nullbyte) 363
Kö der auslegen 364
Die Falle 366
Gegen den Buffer-Overflow 367
Arrays jeder Sorte 369
Sortier mich, aber schnell 369
Sortieren 371
Eine unverschä mt groß e Menge Zahlen sortieren 373
Kapitel 11 Strings und so Zeugs 377
Strings und Zeichen 377
Das Programm 'Mach mich GROSS' 378
Eine bessere Mö glichkeit, einen String zu durchlaufen 380
Ein total verdrehter String 382
Texte verflechten 384
Strings in C kopieren 386
Strings zerlegen 387
Sesam ö ffne dich 390
Stringmanipulationen 392
Strings verbinden 392
Die Stringfunktionen zusammengefasst 395
Arrays jenseits der ersten Dimension 395
Vereinbarung eines zweidimensionalen Arrays 396
Vereinbarung eines initialisierten zweidimensionalen Arrays 397
Zugriff auf die Elemente eines zweidimensionalen Arrays 399
Ein Array aus Strings 400
Arrays in der Grauzone 404
Dreidimensionale String-Arrays 406
Wieder hinter den sieben Bergen bei den sieben Zwergen 407
Kapitel 12 Die finstersten Aspekte von C: Zeiger 411
Ein unhandliches und starres Speicherkonzept 411
Land kaufen, aber kein Haus bauen 412
Mehr oder weniger gefrä ß ige Variablen 414
Die Grö ß e eines Arrays berechnen 416
Lange Rede, kurzer Sinn 417
Adresse, Adresse, Adresse 418
Ein etwas simples Programm als brauchbares Beispiel 418
Hallo, Herr Zeiger! 420
Das zweite Metric-Programm 421
Die Vereinbarung der Zeigervariablen 422
Zeiger zum Speichern von Adressen benutzen 423
Was weiß nun das Programm? 423
Oh Schreck - eine kleine Ü bung zur Selbstkontrolle 425
Nun die Adresse der letzten Variablen 425
Mehr Zeiger, mehr Speicher, Wahnsinn ohne Ende 427
Rö mische Zahlen (und wieder eine Ausnahme) 430
Noch mehr Rö mer 432
Das total verdorbene Rö mer-Programm 433
Und nun das Sternchen, bitte schö n 434
Rü ckblick 434
Zeiger, die zeigen und schauen 435
Der Zeiger als neugieriger Postbote 435
Noch mehr Durcheinander mit den *-Zeigern 437
Ein Zeiger und mehrere Variablen 438
Zeiger und Arrays 439
Ein Array mit einem Zeiger durchlaufen 440
Nun eine wahrhaft schwer zu knackende Nuss 442
Zeiger, Klammern, Arithmetik - puh 443
Zeiger sollen Arrays nicht ersetzen 444
Zeit, einen Schnitt zu machen 445
Die Beziehung zwischen Zeigern und Array-Klammern 446
Beseitigung aller Spuren der Array-Notation 447
Unglä ubige kö nnen ja nachprü fen 447
Weitere Prü fung 448
Zum guten Schluss: Der Hauptunterschied zwischen
Zeigern und Arrays 448
Kapitel 13 Erste Anwendungen der Zeiger 451
Zeiger und Strings 451
Eine unmö gliche Art, einen String auszugeben 451
Eine bessere Mö glichkeit, einen String anzuzeigen 453
Mehr Tricks 454
Noch mehr Tricks 454
Ein allerletzter Trick 455
Die Tiefen der Bibliotheksdefinitionen 456
Oh! String! String! String! 457
Noch so eine irrefü hrende Sache 458
Vereinbarung eines Strings mit einem char-Zeiger 460
Ü bergabe von Zeigern an Funktionen 461
Rü ckblick zu Zeiger-Problemen 461
Botschaften aus dem Jenseits 463
Ü bergabe von Arrays an und von Funktionen 468
Ü bergabe eines char-Arrays an eine Funktion 469
Die verbotenen Vokale 470
Ü bergabe beliebiger Arrays an Funktionen 473
Analyse der caffeine-Funktion 476
Funktionen, die ihre Variablen tö ten 477
Arrays aus Zeigern 478
Zeiger und Arrays 478
Ein String-Zeiger-Array erzeugen 479
Ein Beispielprogramm 481
Das Zeiger-Array der Kommandozeile 482
Was zum Kuckuck ist das nun? 483
Zeiger (auch in Arrays) sind Variablen 485
Sortieren von Strings mit Zeigern 486
Ein einfaches und falsches Sortierprogramm 486
Was war falsch? 488
Die entsetzlichen Indirekt-Zeiger 488
Sortieren von Strings nach allen Zeichen 491
Kapitel 14 Alles ü ber Strukturen 497
Mehrfachvariablen 497
Das Leben ohne Strukturen 498
Mit Arrays geht es nicht viel besser 500
Wir brauchen eine Karteikarte 501
Fakten zu Strukturen 503
Noch einmal das Passwort-Programm 506
Arrays aus Strukturen 508
Alles in einem Array 510
Der Rest der Mannschaft von Oz 511
Strukturkomponenten kopieren 514
Strukturen und Funktionen 518
Ein spezieller Rü ckblick: Vereinbarung einer globalen Variablen 519
Hey, Funktion, hier kommt eine Struktur! 519
Verschachtelte Strukturen 522
Rü ckgabe einer Struktur aus einer Funktion 524
Groß er Dank gilt der Funktion malloc 530
Ein Beispiel ohne zusä tzlichen Speicherplatz 531
Oh malloc, gib mir mehr Platz 532
Borgen und nicht wiedergeben ist wie gestohlen 533
Nun die richtige Speicherbereitstellung fü r Howdy. c 535
Strukturen und (schon wieder!) Zeiger 537
Was Sie brauchen, um eine Struktur im Speicher anzulegen 537
Das erste Programm mit Zeiger und Struktur 538
Eine leere Zeigerhü lle 541
Teil IV: Daten speichern und verwalten 543
Kapitel 15 Die Festplatte als Diener 545
Hello Disk! 545
Ein kleines Textstü ck auf die Platte schreiben 546
Wie die Arbeit mit Dateien funktioniert 547
Etwas aus einer Datei lesen 550
Versehentliches Ü berschreiben verhindern 552
Binä r oder Text - das ist hier die Frage 555
Ein eigenes type-Programm 555
Ein Dump erstellen 558
Formatierte Ein-/Ausgabe 560
Die formatierte Ausgabe 561
Formatierte Eingabe aus Dateien 562
Ein Array in eine Datei schreiben 563
Ein Array aus der Datei lesen 564
Daten lesen und schreiben 566
Das Grundgerü st fü r ein Programm zum Speichern von Strukturen 566
Eine Struktur in eine Datei schreiben 568
Die Funktion write_info 569
Die read_info-Funktion 571
Kapitel 16 Dynamische Datenstrukturen 575
Dynamische Arrays 575
Arrays mit variabler Lä nge 576
I' werd' narrisch: variable Stringlä ngen 578
Kurzer Rü ckblick zur Datenspeicherung 580
Wie verkettete Listen arbeiten 582
Die erste Struktur 583
Eine Struktur mehr und der Link darauf 584
Und nun der Rest 586
Die NULL kennzeichnet das Ende 588
Kapitel 17 Die Geburt unserer Datenbank 591
Das unvermeidliche Bankkontenprogramm 591
Das BANK-Programm 591
Was bereits funktioniert 595
Datensä tze aus Listen lö schen 597
Ü berflü ssige Datensä tze entfernen 598
Die Funktion deleteAccount() 599
Die Arbeitsweise der Funktion deleteAccount 601
Einmal vom Speicher zur Disk und zurü ck 602
Die Liste auf Platte speichern 602
Eine verkettete Liste von Platte laden 604
Teil V: Der Top-Ten-Teil 607
Kapitel 18 Cehn Grü nde fü r C im Jahr 2020, 2021, 2022 . . . 609
C++, C#, Java, PHP und die anderen {} 609
C ist schlank 609
C ist Fahren ohne ABS und ESP 610
C ist die Sprache der APIs und Kernel 611
C ist 31337 611
C ist die Sprache der Aufzü ge und Kü hlschrä nke 611
C ist allgegenwä rtig 612
C ist die Sprache der Schnittstellen 612
C treibt die Dinge voran 612
C ist wichtig . . . 612
Kapitel 19 Zehn Empfehlungen zum Schreiben unlesbarer Programme 613
Lü gen Sie in den Kommentaren 613
Verwenden Sie mö glichst kurze Variablennamen 614
Nutzen Sie Copy&Paste ausgiebig 614
Stö bern Sie im Thesaurus 614
Legen Sie sich niemals fest 615
Wenn's mit dem Englisch hapert 615
Ziehen Sie Schreibfehler konsequent durch 615
Seien Sie modern und geben Sie Ihren Quellcode frei 616
Finden Sie Workarounds fü r eigene Fehler 616
Verzichten Sie auf lesbare Codeformatierungen 617
Kapitel 20 Zehn nü tzliche Internetadressen zu C 619
Stackoverflow 619
A Programmer's Heaven 619
Codeguru. com 619
C for Dummies 620
Nachschlagewerk zur Bibliothek 620
Noch ein Nachschlagewerk 620
Der C-Standard 620
Der Compiler - Code::Blocks 620
Visual Studio Express Editions 621
c++. net 621
Stichwortverzeichnis 625