タブをスペースに変えたり、スペースをタブに変えたりすることで、テキストの見た目を整えることができます。
この記事では、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
に書き出します。
プログラムを実行して、実際に変換が行われる様子を確認してみてください。