【C言語】タブとスペースを相互に変換する方法を解説

この記事では、C言語を使ってタブとスペースを相互に変換するプログラムの書き方を解説します。

タブをスペースに変換する方法と、スペースをタブに変換する方法を具体的なサンプルコードと実行結果の例を交えて紹介します。

これにより、プログラミング初心者の方でも簡単に理解して、異なる環境やエディタでのインデントの扱いに対応することができるようになります。

目次から探す

タブをスペースに変換するプログラムの書き方

タブとスペースは、プログラミングにおいてインデント(字下げ)を行うために使われる文字です。

しかし、異なる環境やエディタを使用する場合、タブとスペースの扱いが異なることがあります。

そのため、タブとスペースを相互に変換するプログラムを作成することは、プログラマにとって便利なツールとなります。

以下に、タブをスペースに変換するプログラムの書き方を解説します。

#include <stdio.h>
int main() {
    int c;
    while ((c = getchar()) != EOF) {
        if (c == '\t') {
            printf("    "); // タブを4つのスペースに変換
        } else {
            putchar(c);
        }
    }
    return 0;
}

このプログラムでは、getchar()関数を使って入力を1文字ずつ読み込み、その文字がタブであれば4つのスペースに変換して出力します。

それ以外の文字はそのまま出力されます。

タブをスペースに変換するプログラムでは、タブの幅を指定することができます。

上記の例では、タブを4つのスペースに変換していますが、必要に応じて変更することができます。

スペースをタブに変換するプログラムの書き方

次に、スペースをタブに変換するプログラムの書き方を解説します。

#include <stdio.h>
#define TAB_WIDTH 4 // タブの幅を指定
int main() {
    int c;
    int count = 0; // スペースの数をカウントする変数
    while ((c = getchar()) != EOF) {
        if (c == ' ') {
            count++;
            if (count == TAB_WIDTH) {
                putchar('\t'); // スペースをタブに変換
                count = 0;
            }
        } else {
            putchar(c);
            count = 0;
        }
    }
    return 0;
}

このプログラムでは、getchar()関数を使って入力を1文字ずつ読み込み、その文字がスペースであればカウントを増やします。

カウントが指定したタブの幅に達した場合、スペースをタブに変換して出力します。

それ以外の文字はそのまま出力されます。

スペースをタブに変換するプログラムでも、タブの幅を指定することができます。

上記の例では、タブの幅を4としていますが、必要に応じて変更することができます。

以上が、タブをスペースに変換するプログラムとスペースをタブに変換するプログラムの書き方です。

目次から探す