| 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.
|