From 563cea897121b33cc5e98dc6ed3a36eb39d52766 Mon Sep 17 00:00:00 2001 From: sinanmohd Date: Sat, 13 May 2023 14:52:00 +0530 Subject: 7.5: initial commit, 4.10 with scanf instead of getchar --- 7.5/op.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 7.5/op.c (limited to '7.5/op.c') diff --git a/7.5/op.c b/7.5/op.c new file mode 100644 index 0000000..e7640e6 --- /dev/null +++ b/7.5/op.c @@ -0,0 +1,32 @@ +#include +#include +#include "op.h" + +char getop(char *op, size_t len) +{ + size_t i; + + *op = '\0'; // if scanf fails + do { + scanf("%c", op); + } while (isblank(*op)); + + if (!isdigit(*op)) + return *op; + + i = 1; + do { + scanf("%c", op + i); + } while (isdigit(op[i]) && ++i < len); + + if (op[i] == '.') { + i++; + do { + scanf("%c", op + i); + } while (isdigit(op[i]) && ++i < len); + } + + ungetc(op[i], stdin); + op[i] = '\0'; + return NUM; +} -- cgit v1.2.3