【C言語】文字列に空白(スペース)が含まれているか判定する方法

この記事では、C言語で文字列に空白(スペース)が含まれているかどうかを判定する方法を紹介します。

目次から探す

文字列に空白が含まれているか判定する方法

プログラミングにおいて、文字列に空白(スペース)が含まれているかどうかを判定する方法はいくつかあります。

ここでは、C言語での3つの方法を紹介します。

方法1: 文字列を1文字ずつ調べる方法

この方法では、文字列を1文字ずつ調べて空白が含まれているかどうかを判定します。

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

#include <stdio.h>
int containsSpace(char* str) {
    int i = 0;
    while (str[i] != '\0') {
        if (str[i] == ' ') {
            return 1; // 空白が含まれている場合は1を返す
        }
        i++;
    }
    return 0; // 空白が含まれていない場合は0を返す
}
int main() {
    char str1[] = "Hello, World!";
    char str2[] = "Hello World!";
    
    if (containsSpace(str1)) {
        printf("str1には空白が含まれています\n");
    } else {
        printf("str1には空白が含まれていません\n");
    }
    
    if (containsSpace(str2)) {
        printf("str2には空白が含まれています\n");
    } else {
        printf("str2には空白が含まれていません\n");
    }
    
    return 0;
}

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

この関数は、引数として与えられた文字列を1文字ずつ調べ、空白が含まれているかどうかを判定します。

空白が含まれている場合は1を、含まれていない場合は0を返します。

方法2: 文字列内の空白を探す関数を使用する方法

C言語には、文字列内の特定の文字を探すための関数が用意されています。

その中でも、strchr関数を使用することで、文字列内に空白が含まれているかどうかを判定することができます。

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

#include <stdio.h>
#include <string.h>
int main() {
    char str1[] = "Hello, World!";
    char str2[] = "Hello World!";
    
    if (strchr(str1, ' ') != NULL) {
        printf("str1には空白が含まれています\n");
    } else {
        printf("str1には空白が含まれていません\n");
    }
    
    if (strchr(str2, ' ') != NULL) {
        printf("str2には空白が含まれています\n");
    } else {
        printf("str2には空白が含まれていません\n");
    }
    
    return 0;
}

上記のコードでは、strchr関数を使用して、引数として与えられた文字列内に指定した文字(ここでは空白)が含まれているかどうかを判定しています。

strchr関数は、指定した文字が見つかった場合はその位置へのポインタを返し、見つからなかった場合はNULLを返します。

方法3: 正規表現を使用する方法

正規表現を使用することで、より柔軟な文字列のパターンマッチングが可能です。

C言語では、正規表現を扱うためのライブラリとして、regex.hが提供されています。

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

#include <stdio.h>
#include <regex.h>
int main() {
    char str1[] = "Hello, World!";
    char str2[] = "Hello World!";
    regex_t regex;
    
    if (regcomp(&regex, " ", 0) != 0) {
        printf("正規表現のコンパイルに失敗しました\n");
        return 1;
    }
    
    if (regexec(&regex, str1, 0, NULL, 0) == 0) {
        printf("str1には空白が含まれています\n");
    } else {
        printf("str1には空白が含まれていません\n");
    }
    
    if (regexec(&regex, str2, 0, NULL, 0) == 0) {
        printf("str2には空白が含まれています\n");
    } else {
        printf("str2には空白が含まれていません\n");
    }
    
    regfree(&regex);
    
    return 0;
}

上記のコードでは、regex.hライブラリを使用して正規表現を扱っています。

regcomp関数を使用して正規表現をコンパイルし、regexec関数を使用して文字列とのマッチングを行います。

正規表現パターンとして単純に空白を指定しているため、空白が含まれているかどうかを判定することができます。

以上が、C言語で文字列に空白が含まれているかどうかを判定する方法の3つの例です。

それぞれの方法には特徴があり、使用する場面によって適切な方法を選択することが重要です。

目次から探す