1 /* 2 * spruenge.c 3 * 4 * Version von while-Schleife.c mit ausfuehrliche Fehlerbehandlung 5 * als Beispiel fuer die Verwendung von break, continue, return. 6 * Liest wie while-Schleife.c beliebig viele Zahlen ein und 7 * gibt deren Summe aus. 8 * 9 * Autor: H.Drachenfels 10 * Erstellt am: 28.6.2019 11 */
12
13 #include <stdio.h>
14 #include <ctype.h>
15
16 int main(void)
17 {
18 printf("Zahlen eingeben (Ende mit Strg-D): ");
19
20 int sum = 0;
21 while (1) // Endlos-Schleife, alternativ auch: for (;;)
22 {
23 //------------------------------------------------ Eingabe lesen
24 int n;
25 int i = scanf("%d", &n);
26
27 //-------------------------------------- Eingabefehler behandeln
28 if (i == EOF)
29 {
30 // Fehlerursache: Benutzer hat Strg-D eingegeben
31 fprintf(stderr, "*** Eingabeende\n");
32 break; // hinter die Schleife springen
33 }
34 else if (i == 0)
35 {
36 // Fehlerursache: Der Benutzer hat keine Ziffern eingegeben
37 fprintf(stderr, "*** Eingabe ist keine ganze Zahl: ");
38
39 // Falsche Zeichen entfernen
40 int c;
41 while ((c = getchar()) != EOF && !isspace(c))
42 {
43 putc(c, stderr);
44 }
45
46 putc('\n', stderr);
47 continue; // zum naechsten Schleifendurchlauf springen
48 }
49
50 //------------------------------------------------- aufsummieren
51 sum += n;
52 }
53
54 printf("Summe: %d\n", sum);
55
56 return 0; // normales Programmende
57 }
58