演習1-21 K&R プログラミング言語C

演習1-21

n 回連続するスペースを単純にタブに変換するだけのものを作った。

#include <stdio.h>

#define DEFAULT_TABSTOP 4
#define IS_BLANK 1
#define NOT_BLANK 0

void put_space(int len, char c);

int main(int argc, char *argv[])
{
    int c, count, n, is_blank;

    n = DEFAULT_TABSTOP;

    is_blank = IS_BLANK;
    count = 0;
    while ((c = getchar()) != EOF) {
        if (c == ' ') {
            is_blank = IS_BLANK;
            if (++count == n) {
                putchar('\t');
                count = 0;
            }
        } else {
            if (is_blank) {
                put_space(count, ' ');
                count = 0;
            }
            is_blank = NOT_BLANK;
            putchar(c);
        }
    }

    return 0;
}

void put_space(int len, char c)
{
    int i;
    for (i = 0; i < len; ++i) {
        putchar(c);
    }
}
プログラミング言語C 第2版 ANSI規格準拠
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
«
»