MENU

【C言語】文字列中のタブをカウントする方法を解説

この記事では、C言語プログラミングにおいて、文字列中のタブをカウントする方法を解説します。

目次から探す

タブ文字とは

タブ文字は、テキストデータ内で水平方向にスペースを作るために使用される特殊な文字です。

ASCIIコードでは、タブ文字は水平タブ(Horizontal Tab)として定義されており、16進数で0x09で表されます。

タブ文字は通常、テキストエディタやコンソール上でタブキーを押すことで挿入することができます。

タブ文字の特徴

タブ文字は、単一の文字として扱われますが、表示上は複数のスペースが挿入されたように見えます。

タブ文字は、テキスト内の位置によってスペースの数が変わるため、テキストの整形やインデントに便利です。

ただし、タブ文字の使用は一貫性が求められるため、プログラミングにおいてはスペース文字を使用することが推奨されることもあります。

タブをカウントする方法

文字列中のタブの数をカウントする方法には、いくつかのアプローチがあります。

ここでは、ループを使った方法とポインタを使った方法の2つを紹介します。

方法1: ループを使った方法

この方法では、文字列を1文字ずつ走査しながら、タブ文字を見つけた場合にカウントを増やしていきます。

以下にサンプルコードを示します。

#include <stdio.h>
int countTabs(char* str) {
    int count = 0;
    int i = 0;
    while (str[i] != '\0') {
        if (str[i] == '\t') {
            count++;
        }
        i++;
    }
    return count;
}
int main() {
    char str[] = "Hello\tWorld\t!\t";
    int tabCount = countTabs(str);
    printf("タブの数: %d\n", tabCount);
    return 0;
}

上記のコードでは、countTabs関数を定義しています。

この関数は、引数として文字列を受け取り、その中に含まれるタブ文字の数を返します。

main関数では、サンプルの文字列を用意し、countTabs関数を呼び出してタブの数を取得し、結果を表示しています。

方法2: ポインタを使った方法

この方法では、ポインタを使って文字列を走査しながら、タブ文字を見つけた場合にカウントを増やしていきます。

以下にサンプルコードを示します。

#include <stdio.h>
int countTabs(char* str) {
    int count = 0;
    char* ptr = str;
    while (*ptr != '\0') {
        if (*ptr == '\t') {
            count++;
        }
        ptr++;
    }
    return count;
}
int main() {
    char str[] = "Hello\tWorld\t!\t";
    int tabCount = countTabs(str);
    printf("タブの数: %d\n", tabCount);
    return 0;
}

上記のコードでは、countTabs関数を定義しています。

この関数は、引数として文字列を受け取り、その中に含まれるタブ文字の数を返します。

main関数では、サンプルの文字列を用意し、countTabs関数を呼び出してタブの数を取得し、結果を表示しています。

タブ以外の空白文字もカウントする方法

もしタブ以外の空白文字(スペースや改行など)もカウントしたい場合は、上記の方法を少し変更する必要があります。

例えば、ループを使った方法では、if文の条件を変更して他の空白文字もカウントすることができます。

以下にサンプルコードを示します。

#include <stdio.h>
int countSpaces(char* str) {
    int count = 0;
    int i = 0;
    while (str[i] != '\0') {
        if (str[i] == '\t' || str[i] == ' ' || str[i] == '\n') {
            count++;
        }
        i++;
    }
    return count;
}
int main() {
    char str[] = "Hello\tWorld !\n";
    int spaceCount = countSpaces(str);
    printf("空白文字の数: %d\n", spaceCount);
    return 0;
}

上記のコードでは、countSpaces関数を定義しています。

この関数は、引数として文字列を受け取り、その中に含まれるタブ文字やスペース、改行文字の数を返します。

main関数では、サンプルの文字列を用意し、countSpaces関数を呼び出して空白文字の数を取得し、結果を表示しています。

目次から探す