Books & Videos

Table of Contents

  1. Chapter 1 Erste Schritte mit C: Eintauchen

    1. C, die Sprache für kleine, schnelle Programme

    2. Aber wie sieht ein vollständiges C-Programm aus?

    3. Und wie führen Sie das Programm aus?

    4. Zwei Arten von Befehlen

    5. So sieht der Code bislang aus

    6. Kartenzählen? In C?

    7. Vergleiche kennen nicht nur Gleichheit ...

    8. Wie sieht der Code jetzt aus?

    9. Weichen stellen

    10. Wenn einmal keinmal ist ...

    11. Schleifen haben oft eine ähnliche Struktur ...

    12. Mit break ausbrechen ...

    13. Ihr C-Werkzeugkasten

  2. Chapter 2 Speicher und Zeiger: Worauf zeigst du?

    1. C-Code enthält Zeiger

    2. Ein Blick in den Speicher

    3. Segel setzen mit Zeigern

    4. Kurs Südost, Kapitän

    5. Versuchen wir, der Variablen einen Zeiger zu übergeben

    6. Speicherzeiger einsetzen

    7. Wie übergibt man einer Funktion einen String?

    8. Array-Variablen sind wie Zeiger ...

    9. Was der Computer denkt, wenn er Ihren Code ausführt

    10. Aber Array-Variablen sind nicht das Gleiche wie Zeiger

    11. Warum Arrays wirklich mit 0 beginnen

    12. Warum Zeiger Typen haben

    13. Zeiger für die Dateneingabe verwenden

    14. Aufgepasst mit scanf()

    15. fgets() ist eine Alternative zu scanf()

    16. Bereit zu einer Runde Kümmelblättchen?

    17. Oh ... es gibt ein Speicherproblem ...

    18. Stringliterale können nie aktualisiert werden

    19. Im Speicher: char *karten=“BDK”;

    20. Wenn Sie einen String ändern wollen, kopieren Sie ihn

    21. Im Speicher: char karten[]=“BDK”;

    22. Speicher speichern

    23. Ihr C-Werkzeugkasten

  3. Chapter 3 Strings: Stringtheorie

    1. Suse Frank verzweifelt gesucht

    2. Ein Array mit Arrays erstellen

    3. Strings finden, die den Suchtext enthalten

    4. Die Funktion strstr() einsetzen

    5. Zeit, dass wir uns unseren Code ansehen

    6. Array von Arrays vs. Array von Zeigern

    7. Ihr C-Werkzeugkasten

  4. Chapter 4 Kleine Werkzeuge erstellen: Eine Sache tun, und zwar gut

    1. Kleine Werkzeuge können große Probleme lösen

    2. So sollte das Programm funktionieren

    3. Aber Sie nutzen noch keine Dateien ...

    4. Sie können Ihre Daten umleiten

    5. Die Standardeingabe leitet man mit < um ...

    6. ... und die Standardausgabe mit >

    7. Aber es gibt ein Problem mit einigen Daten ...

    8. Die Standardfehlerausgabe

    9. Standardmäßig wird die Standardfehlerausgabe an den Bildschirm gebunden

    10. fprintf() schreibt in einen Datenstrom

    11. Aktualisieren wir den Code, damit er fprintf() nutzt

    12. Kleine Werkzeuge sind flexibel

    13. Ändern Sie geo2json nicht

    14. Eine andere Aufgabe erfordert ein anderes Werkzeug

    15. Eingaben und Ausgaben mit einer Pipe verbinden

    16. Das bermuda-Werkzeug

    17. Aber was ist, wenn Sie mehr als eine Datei ausgeben wollen?

    18. Der eigene Datenstrom

    19. main() kann mehr

    20. In der Von Kopf bis Fuß-Pizzeria aufgeschnappt

    21. Lassen Sie die Bibliothek für sich arbeiten

    22. Ihr C-Werkzeugkasten

  5. Chapter 5 Mehrere Quelldateien: Zerlegen und zusammenbauen

    1. Großes darf man nicht in Kleines stecken

    2. Mit Casts floats in ganze Zahlen packen

    3. Oh nein, arbeitslose Schauspieler am Werk ...

    4. Schauen wir uns an, was dem Code widerfahren ist

    5. Compiler mögen keine Überraschungen

    6. Die Deklaration von der Definition trennen

    7. Ihre erste Header-Datei

    8. Bei Gemeinsamkeiten ...

    9. Sie können Code auf mehrere Dateien aufteilen

    10. Kompilieren – was steckt dahinter?

    11. Der gemeinsame Code braucht einen Header

    12. Es ist kein Mysterium ... oder doch?

    13. Nicht alles neu kompilieren

    14. Erst aus Quellen Objektdateien machen

    15. Das Nachhalten der Dateien ist aufwendig

    16. Die Erstellung mit make automatisieren

    17. Wie make funktioniert

    18. make mit einem makefile über Ihren Code informieren

    19. Abheben!

    20. Ihr C-Werkzeugkasten

  6. C-Workshop: Arduino

    1. Chapter 6 Structs, Unions und Bitfelder: Eigene Strukturen

      1. Wenn viele Daten wandern wollen
      2. Bürogespräche
      3. Strukturierte Datentypen mit Structs gestalten
      4. Fisch und nichts anderes
      5. Die Felder eines Struct lesen Sie mit dem ».«-Operator
      6. Kann man ein Struct in ein anderes stecken?
      7. Wie aktualisiert man ein Struct?
      8. Der Code klont die Kröte
      9. Sie brauchen einen Zeiger auf das Struct
      10. (*s).alter vs. *s.alter
      11. Manchmal erfordert eine Sache mehrere Datentypen
      12. Mit einer Union können Sie Speicherplatz sparen
      13. Wie man eine Union nutzt?
      14. Eine Enum-Variable speichert ein Symbol
      15. Kontrolle bis zur Bit-Ebene
      16. Bitfelder speichern eine beliebige Anzahl von Bits
      17. Ihr C-Werkzeugkasten
    2. Chapter 7 Datenstrukturen und dynamischer Speicher: Brücken bauen

      1. Flexibler Speicher gefällig?
      2. Verkettete Listen sind wie Datenketten
      3. Verkettete Listen gestatten Einfügungen
      4. Eine rekursive Struktur erstellen
      5. Mit C Inseln schaffen ...
      6. Werte in die Liste einsetzen
      7. Dynamische Speicherung auf dem Heap
      8. Hinterher den Speicher freigeben
      9. Mit malloc() Speicher anfordern ...
      10. O nein! Schon wieder die Schauspieler ...
      11. Reparieren wir den Code mit strdup()
      12. Geben Sie Speicher frei, wenn Sie ihn nicht mehr benötigen
      13. Beweisstück 1: der Quellcode
      14. Das System im Überblick
      15. Softwareforensik: valgrind
      16. Wiederholte Beweisaufnahme mit valgrind
      17. Die Beweisstücke
      18. Die Reparatur testen
      19. Ihr C-Werkzeugkasten
    3. Chapter 8 Fortgeschrittene Funktionen: Ihre Funktionen auf Vordermann bringen

      1. Auf der Suche nach dem Märchenprinzen ...
      2. Einer Funktion Code übergeben
      3. Sie müssen suchen() den Namen einer Funktion mitteilen
      4. Jeder Funktionsname ist ein Zeiger auf die Funktion ...
      5. ... aber es gibt keinen Funktionsdatentyp
      6. Wie man Funktionszeiger erstellt
      7. Ordnung mit der C-Standardbibliothek
      8. Ordnung schaffen mit Funktionszeigern
      9. Standardbriefe automatisieren
      10. Ein Array von Funktionszeigern erstellen
      11. Funktionen deeehnbar machen
      12. Ihr C-Werkzeugkasten
    4. Chapter 9 Statische und dynamische Bibliotheken: Code-Wiederverwendung

      1. Code, den Sie auf die Bank bringen können
      2. Spitze Klammern sind für Standard-Header
      3. Aber was ist, wenn Sie Code gemeinsam nutzen wollen?
      4. Header-Dateien gemeinsam nutzen
      5. Objektdateien über den vollständigen Pfadnamen teilen
      6. Ein Archiv enthält .o-Dateien
      7. Mit dem ar-Befehl ein Archiv erstellen ...
      8. Schließlich die anderen Programme kompilieren
      9. Fit von Kopf bis Fuß expandiert
      10. Kalorien berechnen
      11. Die Geschichte ist leider etwas komplizierter ...
      12. Programme bestehen aus vielen Teilen ...
      13. Dynamisches Linken erfolgt zur Laufzeit
      14. Kann man ein Archiv zur Laufzeit linken?
      15. Erst die Objektdateien erstellen
      16. Der Name Ihrer dynamischen Bibliothek ist plattformabhängig
      17. Ihr C-Werkzeugkasten
  7. C-Workshop: OpenCV

    1. Chapter 10 Prozesse und Systemaufrufe: Grenzverletzungen

      1. Systemaufrufe sind Ihr heißer Draht zum Betriebssystem
      2. Dann bricht jemand in das System ein ...
      3. Sicherheit ist nicht das einzige Problem
      4. Die exec()-Funktionen bieten Ihnen mehr Kontrolle
      5. Es gibt diverse exec()-Funktionen
      6. Die Array-Funktionen: execv(), execvp(), execve()
      7. Umgebungsvariablen übergeben
      8. Die meisten Systemaufrufe scheitern auf gleiche Weise
      9. Nachrichten lesen mit RSS
      10. exec() ist die Ziellinie für Ihr Programm
      11. Mit fork() + exec() einen Kindprozess starten
      12. Ihr C-Werkzeugkasten
    2. Chapter 11 Interprozesskommunikation: Ein nettes Gespräch

      1. Eingabe und Ausgabe umleiten
      2. Ein Blick in einen typischen Prozess
      3. Eine Umleitung ersetzt einfach die Datenströme
      4. fileno() nennt Ihnen den Dateideskriptor
      5. Manchmal muss man warten ...
      6. Mit dem Kind verbunden bleiben
      7. Prozesse mit Pipes verbinden
      8. Fallstudie: Storys in einem Browser öffnen
      9. Im Kind
      10. Im Elternprozess
      11. Eine Webseite in einem Browser öffnen
      12. Der Tod eines Prozesses
      13. Signale abfangen und eigenen Code ausführen
      14. sigactions werden mit sigaction() registriert
      15. Den Code den Signal-Handler nutzen lassen
      16. Mit kill Signale senden
      17. Ihrem Code einen Weckruf senden
      18. Ihr C-Werkzeugkasten
    3. Chapter 12 Sockets und Netzwerke: 127.0.0.1 ist ein toller Ort

      1. Der Internet-Knock-Knock-Server
      2. Knock-Knock-Server im Überblick
      3. BLAB: Wie Server mit dem Internet reden
      4. Ein Socket ist kein billiger Datenstrom
      5. Manchmal startet der Server nicht korrekt
      6. Warum Mama gepredigt hat, immer auf die Fehler zu achten
      7. Vom Client lesen
      8. Der Server kann immer nur mit jeweils einer Person reden
      9. Sie können einen eigenen Prozess für jeden Client forken
      10. Einen Webclient schreiben
      11. Clients an die Macht
      12. Ein Socket für eine IP-Adresse erstellen
      13. getaddrinfo() ermittelt Adressen zu Domains
      14. Ihr C-Werkzeugkasten
    4. Chapter 13 Threads: Parallelwelten

      1. Aufgaben verrichtet man nacheinander ... oder auch nicht ...
      2. ... und Prozesse sind nicht immer die Antwort
      3. Einfache Prozesse tun eine Sache nach der anderen
      4. Zusätzliches Personal: Threads
      5. Wie man Threads erstellt?
      6. Threads mit pthread_create erstellen
      7. Der Code ist nicht Thread-sicher
      8. Sie müssen Verkehrszeichen einführen
      9. Einen Mutex als Verkehrszeichen nutzen
      10. Ihr C-Werkzeugkasten
  8. C-Workshop: Blasteroids

    1. Appendix Was übrig bleibt: Die Top Ten der Dinge (die wir nicht behandelt haben)

      1. 1. Operatoren
      2. 2. Präprozessordirektiven
      3. 3. Das Schlüsselwort static
      4. 4. Wie groß die Dinge sind
      5. 5. Automatisierte Tests
      6. 6. Mehr zu gcc
      7. 7. Mehr zu make
      8. 8. Entwicklungswerkzeuge
      9. 9. GUIs erstellen
      10. 10. Referenzmaterial
    2. Appendix C-Themen: Zusammenfassungen im Überblick

      1. Grundlagen
      2. Zeiger und Speicher
      3. Strings
      4. Datenströme
      5. Datentypen
      6. Mehrere Dateien
      7. structs
      8. unions und Bitfelder
      9. Datenstrukturen
      10. Dynamischer Speicher
      11. Fortgeschrittene Funktionen
      12. Statische und dynamische Bibliotheken
      13. Prozesse und Kommunikation
      14. Sockets und Netzwerke
      15. Threads