C-Programmierung
Gepufferte Ein- und Ausgabe
← Standard-Header | ● | Ausgabe mit printf →
Gepufferte Eingabe mit getchar()
- Eingebene Zeichen werden nicht sofort an das Programm übergeben, sondern vom Betriebssystem in einem internen Puffer abgelegt.
- Erst nachdem die Eingabe-Taste (Enter, Return) gedrückt wird, beginnt das Programm mit dem Lesen aus dem Puffer. Auch die Eingabe Taste (‘\n’) wird noch am Ende des Puffers gespeichert.
char c;
printf("enter a character: ");
c=getchar(); /* read character */
while (c!='\n') c=getchar(); /* dummy-getchar() */
printf("enter a character: ");
c=getchar(); /* read character */
while (c!='\n') c=getchar(); /* dummy-getchar() */
- Überprüfen eines Zeichens mit
<ctype.h>
if (isdigit(c)) printf("digit 0..9");
if (isxdigit(c)) printf("hex-digit 0..9, a..f, A..F");
if (isalpha(c)) printf("upper or lower-case letter a..z, A..Z");
if (isalnum(c)) printf("alphanumeric 0..9, a..z, A..Z");
c=tolower(c); /* convert to lower-case letter a..z */
c=toupper(c); /* convert to upper-case letter A..Z */
if (isxdigit(c)) printf("hex-digit 0..9, a..f, A..F");
if (isalpha(c)) printf("upper or lower-case letter a..z, A..Z");
if (isalnum(c)) printf("alphanumeric 0..9, a..z, A..Z");
c=tolower(c); /* convert to lower-case letter a..z */
c=toupper(c); /* convert to upper-case letter A..Z */
Interner Puffer auch bei scanf()
- Auch beim zeilenweisen Einlesen wird erst der interne Puffer bis zur Eingabe-Taste gefüllt.
int n;
printf("enter a number: ");
scanf("%d", &n); /* read number */
while (getchar()!='\n'); /* dummy-getchar() */
printf("enter a number: ");
scanf("%d", &n); /* read number */
while (getchar()!='\n'); /* dummy-getchar() */
- Die Funktion
scanf()
überliest anfänglich automatisch sämtlichen white-space, so dass bei mehreren aufeinanderfolgenden Eingaben der dummy-getchar() nur abschliessend notwendig ist:
scanf("%d", &n1);
scanf("%d", &n2);
...
while (getchar()!='\n');
scanf("%d", &n2);
...
while (getchar()!='\n');
← Standard-Header | ● | Ausgabe mit printf →