c 程式設計語言 第二版 練習題 5-2
阿新 • • 發佈:2019-02-03
double getfloat(double *pn) { if (pn == NULL) return -1; int c, sign, flag=1; while (isspace(c = getchar())); if (!isdigit(c) && c != EOF && c != '+' && c != '-') { ungetc(c, stdin); return 0; } sign = (c == '-') ? -1 : 1; if (c == '-' || c == '+') { c = getchar(); if (!isdigit(c)) { ungetc(c, stdin); return 0; } } for (*pn = 0;isdigit(c);c = getchar()) { *pn = 10 * *pn + (c - '0'); } if (c == '.') { c = getchar(); if (!isdigit(c)) { ungetc(c, stdin); } for (;isdigit(c);c = getchar()) { flag *= 10; *pn = 10 * *pn + (c - '0'); } } *pn = *pn / flag * sign; if (c != EOF) ungetc(c, stdin); return c; }