Blame


1 5dc21454 2023-07-14 jrmu /*
2 5dc21454 2023-07-14 jrmu * Exercise 4-8. Suppose that there will never be more than one character of
3 5dc21454 2023-07-14 jrmu * pushback. Modify getch and ungetch accordingly.
4 5dc21454 2023-07-14 jrmu *
5 5dc21454 2023-07-14 jrmu */
6 5dc21454 2023-07-14 jrmu
7 5dc21454 2023-07-14 jrmu #include <stdio.h>
8 5dc21454 2023-07-14 jrmu #include <string.h>
9 5dc21454 2023-07-14 jrmu
10 5dc21454 2023-07-14 jrmu #define MAXLENGTH 800
11 5dc21454 2023-07-14 jrmu
12 5dc21454 2023-07-14 jrmu int getch(void);
13 5dc21454 2023-07-14 jrmu void ungetch(int c);
14 5dc21454 2023-07-14 jrmu
15 5dc21454 2023-07-14 jrmu #define BUFSIZE 100
16 5dc21454 2023-07-14 jrmu
17 5dc21454 2023-07-14 jrmu char buf = EOF; /* buffer for ungetch */
18 5dc21454 2023-07-14 jrmu
19 5dc21454 2023-07-14 jrmu /* get a (possibly pushed back) character, \0 if no character */
20 5dc21454 2023-07-14 jrmu int getch(void) {
21 5dc21454 2023-07-14 jrmu char c = bufp;
22 5dc21454 2023-07-14 jrmu bufp = EOF;
23 5dc21454 2023-07-14 jrmu return c;
24 5dc21454 2023-07-14 jrmu }
25 5dc21454 2023-07-14 jrmu
26 5dc21454 2023-07-14 jrmu /* push character back on input */
27 5dc21454 2023-07-14 jrmu void ungetch(int c) {
28 5dc21454 2023-07-14 jrmu if (bufp == EOF)
29 5dc21454 2023-07-14 jrmu bufp = c;
30 5dc21454 2023-07-14 jrmu else
31 5dc21454 2023-07-14 jrmu printf("ungetch: too many characters\n");
32 5dc21454 2023-07-14 jrmu }