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

タブをスペースに変えたり、スペースをタブに変えたりすることで、テキストの見た目を整えることができます。

この記事では、C言語を使ってタブとスペースを簡単に変換する方法を紹介します。

プログラムの具体的なコード例や実行手順も説明するので、初心者の方でも安心して学ぶことができます。

目次から探す

C言語でのタブとスペースの変換方法

C言語では、タブとスペースを相互に変換することができます。

これにより、コードの可読性を向上させたり、特定のフォーマットに合わせたりすることが可能です。

ここでは、タブをスペースに変換する方法と、スペースをタブに変換する方法について詳しく解説します。

タブをスペースに変換する方法

タブをスペースに変換するには、文字列を読み込み、タブ文字(\t)をスペースに置き換える処理を行います。

以下にそのためのコード例を示します。

コード例

#include <stdio.h>
void convertTabToSpace(FILE *inputFile, FILE *outputFile) {
    char ch;
    // 入力ファイルから1文字ずつ読み込む
    while ((ch = fgetc(inputFile)) != EOF) {
        // タブ文字の場合、スペース4つに置き換える
        if (ch == '\t') {
            fputc(' ', outputFile);
            fputc(' ', outputFile);
            fputc(' ', outputFile);
            fputc(' ', outputFile);
        } else {
            fputc(ch, outputFile);
        }
    }
}
int main() {
    FILE *inputFile = fopen("input.txt", "r");
    FILE *outputFile = fopen("output.txt", "w");
    if (inputFile == NULL || outputFile == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1;
    }
    convertTabToSpace(inputFile, outputFile);
    fclose(inputFile);
    fclose(outputFile);
    printf("タブをスペースに変換しました。\n");
    return 0;
}

このコードでは、input.txtというファイルから文字を読み込み、タブ文字を4つのスペースに置き換えてoutput.txtに書き出します。

スペースをタブに変換する方法

次に、スペースをタブに変換する方法について説明します。

こちらも文字列を読み込み、連続するスペースをタブに置き換える処理を行います。

コード例

#include <stdio.h>
void convertSpaceToTab(FILE *inputFile, FILE *outputFile) {
    char ch;
    int spaceCount = 0;
    while ((ch = fgetc(inputFile)) != EOF) {
        // スペースの場合、カウントを増やす
        if (ch == ' ') {
            spaceCount++;
        } else {
            // 4つのスペースがあった場合、タブに置き換える
            while (spaceCount >= 4) {
                fputc('\t', outputFile);
                spaceCount -= 4;
            }
            // 残りのスペースをそのまま出力
            for (int i = 0; i < spaceCount; i++) {
                fputc(' ', outputFile);
            }
            fputc(ch, outputFile);
            spaceCount = 0; // カウントをリセット
        }
    }
    // 残っているスペースを処理
    while (spaceCount >= 4) {
        fputc('\t', outputFile);
        spaceCount -= 4;
    }
    for (int i = 0; i < spaceCount; i++) {
        fputc(' ', outputFile);
    }
}
int main() {
    FILE *inputFile = fopen("input.txt", "r");
    FILE *outputFile = fopen("output.txt", "w");
    if (inputFile == NULL || outputFile == NULL) {
        printf("ファイルを開けませんでした。\n");
        return 1;
    }
    convertSpaceToTab(inputFile, outputFile);
    fclose(inputFile);
    fclose(outputFile);
    printf("スペースをタブに変換しました。\n");
    return 0;
}

このコードでは、input.txtから読み込んだスペースを4つごとにタブに置き換え、output.txtに書き出します。

タブ文字をスペースに変換したサイトは異なり、一定文字数以上スペースが連続していた場合にのみタブ文字に置き換えてる点に注意してください。

プログラムを実行して、実際に変換が行われる様子を確認してみてください。

目次から探す