演習4-7 K&R プログラミング言語C

演習4-7

#include <stdio.h>
#include <string.h>

#define BUFSIZE 100

char buf[BUFSIZE]; /* ungetch 用のバッファ */
int bufp = 0;      /* buf 中の次の空き位置 */

int getch(void);
void ungetch(int c);
void ungets(char s[]);

int main(void)
{
    char s[] = "hello, world.";
    int c;

    ungets(s);

    while ((c = getch()) != EOF) {
        putchar(c);
    }

    return 0;
}

int getch(void) /* (押し戻された可能性もある)1文字をとってくる */
{
    return (bufp > 0) ? buf[--bufp] : getchar();
}

void ungetch(int c)
{
    if (bufp >= BUFSIZE) {
        printf("ungetch: too many characters\n");
    } else {
        buf[bufp++] = c;
    }
}

void ungets(char s[])
{
    int l = strlen(s);

    while (l > 0) {
        ungetch(s[--l]);
    }
}
プログラミング言語C 第2版 ANSI規格準拠
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
«
»