Using break and continue
suggest changeImmediately continue
reading on invalid input or break
on user request or end-of-file:
#include <stdlib.h> /* for EXIT_xxx macros */ #include <stdio.h> /* for printf() and getchar() */ #include <ctype.h> /* for isdigit() */ void flush_input_stream(FILE * fp);
int main(void) { int sum = 0; printf("Enter digits to be summed up or 0 to exit:\n"); do { int c = getchar(); if (EOF == c) { printf("Read 'end-of-file', exiting!\n"); break; } if ('\n' != c) { flush_input_stream(stdin); } if (!isdigit(c)) { printf("%c is not a digit! Start over!\n", c); continue; } if ('0' == c) { printf("Exit requested.\n"); break; } sum += c - '0'; printf("The current sum is %d.\n", sum); } while (1); return EXIT_SUCCESS; } void flush_input_stream(FILE * fp) { size_t i = 0; int c; while ((c = fgetc(fp)) != '\n' && c != EOF) /* Pull all until and including the next new-line. */ { ++i; } if (0 != i) { fprintf(stderr, "Flushed %zu characters from input.\n", i); } }
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents