代码来自《K&R》
范例输入(控制台):
-32 23 11 18
33987 23
^Z
范例输出:
-32
23
11
18
33987
23
#include<stdio.h> #define SIZE 100 int main() { int n, array[SIZE], getint(int *); for(n = 0; n < SIZE && getint(&array[n]) != EOF; n ++) ; for(int i = 0; i < n; i ++) printf("%d ", *(array+i)); return 0; } #include<ctype.h> int getch(void); void ungetch(int); int getint(int *pn) { int c, sign; while(isspace(c = getch())) ; if(!isdigit(c) && c != EOF && c != '-' && c != '+'){ ungetch(c); return 0; } sign = (c == '-')? -1 : 1; if(c == '+' || c == '-') c = getch(); for(*pn = 0; isdigit(c); c = getch()) *pn = 10 * *pn + (c - '0'); *pn *= sign; if(c != EOF) ungetch(c); return c; } #define BUFSIZE 100 char buf[BUFSIZE]; int bufp = 0; int getch(void) { return (bufp > 0)? buf[--bufp] : getchar(); } void ungetch(int c) { if(bufp >= BUFSIZE) printf("ungetch: too many characters "); else buf[bufp++] = c; }