Last Update: Oct.7,2001

C Source Library

「LSI C-86 Ver.3.30c 試食版」、「Borland C++ 5.5」、「Microsoft Visual C++ 6.0」でコンパイル出来ます。

■ スペース → タブ変換

/*
 *  sp2tab.c : スペース → タブ変換
 *
 *      Copyright (c) 2001 AOK. 
 *  
 *      2001/10/07 - 初版
 *
 *      使い方: [入力] 標準入力 [出力] 標準出力
 *
 *          例 : SP2TAB < in.txt > out.txt
 *
 *      C言語等のプログラムソースに使用すると文字定数や文字列定数内
 *      のスペースもタブに変換されてしまうので注意して下さい。
 *
 */

#include <stdio.h>

const int tabw = 4; /* タブ幅 */

int main()
{
    int c, col = 0, spc = 0;
    while ((c = getchar()) != EOF)
    {
        col++;
        switch ((char)c)
        {
        case ' ':
            spc++;
            if (col % tabw == 0)
            {
                putchar('\t');
                spc = col = 0;
            }
            break;
        case '\t':
        case '\n':
            spc = col = 0;
            putchar((char)c);
            break;
        default:
            while (spc-- > 0) putchar(' ');
            putchar((char)c);
            spc = 0;
            break;
        }
    }
    return 0;
}