ソフトウェア開発 C言語

タブを展開する

戻る


標準入力からテキストを読み込み、タブを展開したものを標準出力に出力するコードは以下の通り。

#include <stdio.h>

char * program;

void syntax(void)
{
    fprintf(stderr, "syntax: %s [-x] < input_file > output_file\n", program);
    fprintf(stderr, "x is a digit (0 to 9) that indicates tab stop.\n\n");
}

int main(int argc, char *argv[])
{
    int i, n, column, tabstop;
    char c;

    program = argv[0];
    
    tabstop = 8;
    
    if (argc > 2)
    {
        syntax();
        return 1;
    }
    
    if (argc == 2)
    {
        if (*argv[1] == '-')
        {
            tabstop = *(argv[1] + 1) - (int)'0';
            if (tabstop < 0)
            {
                syntax();
                return 2;
            }
        }
        else
        {
            syntax();
            return 3;
        }
    }

    while (EOF != (c = getchar()))
    {
        if (c == '\n')
        {
            putchar(c);
            column = 0;
        }
        else if (c != '\t')
        {
            putchar(c);
            ++column;
        }
        else
        {
            n = tabstop - column % tabstop;
            for(i = 0; i < n; ++i) putchar(' ');
            column = column + n;
        }
    }
    
    return 0;
}

ソース: expand.zip


国内格安航空券サイトe航空券.com

戻る

©片山博文MZ
katayama.hirofumi.mz@gmail.com

inserted by FC2 system