Guido Krüger's Web Service

GoTo C-Programmierung

(This page is available in German only. )
Beschreibung - Bekannte Fehler - Bestellung

Beschreibung

Guido Krüger
GoTo C-Programmierung

Addison-Wesley, 1998

ISBN 3-8273-1368-6



Nach der Fertigstellung von "Java 1.1 lernen" entschied ich mich, eine dritte Auflage von "Programmieren in C" zu erstellen. Neben vielen Detailverbesserungen und Korrekturen sind gegenüber den beiden Vorgängerversionen folgende Erweiterungen hinzugekommen:
  • Anwendung der GNU-Tools
  • Kompilieren und Linken von C-Programmen
  • Der Editor GNU-Emacs
  • Anwendung von Debugger und Profiler
  • Projekt- und Versionsmanagement
  • Eine 200-seitige Referenz der Standard-Library
  • Eine Liste der am häufigsten auftretenden Programmierfehler in C und Tips zu ihrer Behebung
Das Buch hat nun über 800 Seiten und behandelt alle wichtigen Themen, die für Anfänger und fortgeschrittene C-Programmierer von Bedeutung sind. Die beigefügte CD enthält den Sourcecode aus dem Buch und alle erwähnten Werkzeuge. Mit vorinstallierten Versionen von GNU-C, Emacs und diversen Hilfsprogrammen wird eine leicht zu bedienende, aber dennoch leistungsstarke kommandozeilenbasierte Entwicklungsumgebung zum Erstellen von 32-Bit-MS-DOS-Programmen zur Verfügung gestellt.

Bekannte Fehler

Nachfolgend findet ihr eine Liste aller bekannten Fehler im Buch. Sie sollten mit dem ersten, korrigierten Nachdruck behoben sein. Solltet ihr weitere Fehler finden, sendet mir bitte eine kurze E-Mail.
Position Beschreibung
Seite 51, Zeilen 6 und 10 v.u. Statt test.c muß der Name des Listing lsg0104.c heißen, so wie es im Kommentar des Listings steht.
Seite 95, Zeilen 6 und 7 v.o. Statt if A then B else TRUE muß es heißen if A then B else FALSE.
Seite 122, Zeile 15 v.o. Statt ...Logisches-UND-Operators... muß es heißen ...Logisches-ODER-Operators....
Seite 131, Zeilen 22 und 23 v.o. Statt
else if ( Testausdruck-2 )
  Anweisung-2
muß es heißen
else if ( Testausdruck-3 )
  Anweisung-3
Seite 136, Zeile 19 v.o. Statt ...auf TRUE gesetzt, und... muß es heißen ...auf FALSE gesetzt, und....
Seiten 207 und 208, Listing bsp0510.c Das Listing enthält gleich mehrere Fehler. In der while-Schleife wird monat als Arrayindex verwendet (richtig wäre: monat - 1), und die Addition des Schalttages erfolgt fälschlicherweise erst nach dem Herunterzählen der Variable monat (womit jedes Jahr 365 Tage hat). Eine verbesserte Version des Programms könnte so aussehen:
/* bsp0510.c */

#include <stdio.h>
#define schalt_jahr(j) ((j%4==0 && j%100!=0) || j%400==0)

int monats_tage[] = {31,28,31,30,31,30,31,31,30,31,30,31};

void main(void)
{
  int tag, monat, jahr;
  int tage;

  printf("Bitte Datum [Tag Monat Jahr]: ");
  scanf("%d %d %d", &tag, &monat, &jahr);

  tage = tag;
  if (schalt_jahr(jahr) && monat > 2) {
    tage++;
  }
  while (--monat) {
    tage += monats_tage[monat - 1];
  }
  printf("Der %d. Tag\n", tage);
  printf("Die Woche ist: %d\n", (tage + 6) / 7);
}
Seite 265, Zeile 1 bis 9 v.u. Die Ausgabe des Programms muß lauten:
timer = 10
timer =  9
timer =  8
timer =  7
timer =  6
timer =  5
timer =  4
timer =  3
timer =  2
timer =  1
Seite 326, Zeile 6 v.u. Statt ...die zuätzliche Längenangabe... muß es heißen ...die zusätzliche Längenangabe....
Seite 420, Zeile 8 Um zu betonen, daß die Suche nach dem ersten unterschiedlichen Zeichenpaar abbricht, könnte die Zeile im Listing wie folgt verbessert werden:
printf("Ab dem %d. Zeichen unterschiedlich\n", charcnt + 1);
Seite 574, Zeile 10 v.u. Statt ...einen rohen Reifegrad... muß es heißen ...einen hohen Reifegrad....
Seite 584, Zeile 14 v.u. Statt [...] Gibt eine Menge von Zeichen an,. muß es heißen [...] Gibt eine Menge von Zeichen an..
Seite 609, Zeile 19 v.o. Statt ...und kann sogar Funktionen aufzuru- muß es heißen ...und kann sogar Funktionen aufru-.
Seite 692, Zeile 17 v.u. Statt ..., so daß x = i * y + f muß es heißen ..., so daß x = i * y + r.
Seite 709, Zeile 15 v.u. Statt
int hypot(double k1, double k2);
muß es heißen
double hypot(double k1, double k2);
Seite 712, Zeile 4 v.u. Statt
int labs(long value);
muß es heißen
long labs(long value);
Seite 714, Zeile 2, 3, 11 und 12 v.u. Bei der Beschreibung und beim Rückgabewert der Funktionen log und log10 wurden Hoch- und Tiefstellung verwechselt. Statt log ex muß es log e x heißen, und statt log 10x muß log 10 x stehen.
Seite 716, letzte Zeile Statt dazu nocht sortiert sein. muß es heißen dazu noch sortiert sein..
Seite 717, Zeile 13 v.u. Statt
int fseek(int fd, long offset, int origin);
muß es heißen
int lseek(int fd, long offset, int origin);
Seite 737, Zeile 6 v.u. Statt
int rand(int sig);
muß es heißen
int raise(int sig);
Buchrückseite, Zeile 12 v.o. Statt Proprozessor muß es heißen Präprozessor.

Bestellung

Ihr könnt das Buch so bekommen:
© 1995-2004 Guido Krüger - Last updated 31 Dec 2003 - Back to top-level page