From cda2a45de836beb9e2760a1956ce1898bcf404df Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Sun, 12 Dec 2021 17:00:18 +0800 Subject: 4.9 --- 4/9.c | 31 ++++++++----------------------- 1 file changed, 8 insertions(+), 23 deletions(-) (limited to '4') diff --git a/4/9.c b/4/9.c index 355b29a..0a9fb26 100644 --- a/4/9.c +++ b/4/9.c @@ -155,31 +155,13 @@ void clear() { ; } -int pushb = 0; -int pushbval = 0; - -int getch() { - if (pushb) { - pushb = 0; - return pushbval; - } - return (bufp > 0) ? buf[--bufp] : getchar(); -} +int getch() { return (bufp > 0) ? buf[--bufp] : getchar(); } void ungetch(int c) { - pushbval = c; - pushb = 1; -} - -void ungets(char s[]) { - int len, i; - len = strlen(s); - if (bufp + len - 1 >= BUFSIZE) - printf("ungets: too many characters\n"); - else { - for (i = len; i >= 0; i--) - buf[bufp++] = s[i]; - } + if (bufp >= BUFSIZE) + printf("ungetch: too many characters\n"); + else + buf[bufp++] = c; } int getop(char s[]) { @@ -189,6 +171,9 @@ int getop(char s[]) { ; s[1] = 0; + if (c == EOF) + return EOF; + // operators or line feed if (c == '\n' || c == '+' || c == '*' || c == '/' || c == '%') return c; -- cgit v1.2.3