C言語のきほん「文字列の基本(6)」

スポンサーリンク
プログラミング C言語

今回は、「文字列に特定文字が含まれているかどうかを調べるプログラム」である。

このプログラムでは、文字列sの中に英文字cが含まれていれば、その添字(文字列中に英文字cが複数ある場合は、最も先頭の添字とする。)を返し、含まれていなければ-1を返す関数を作成するものとする。

なお、本プログラムは、Windows 11 Home(23H2)上で、  Visual Studio Code(1.89.1)を使用して作成し、gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0でコンパイルしている。

文字列に特定文字が含まれているかどうかを調べるプログラム

//文字列に特定文字が含まれているかどうかを調べるプログラム

#include <stdio.h>

//文字列s中の最も先頭に位置する文字cを探索
int str_char(const char s[],int c)
{
    for (int i = 0; s[i] != '\0'; i++)
        if (s[i] == c)
            return i;
    return -1;
    
}

int main(void)
{
    int no;
    char ch[10];

    printf("アルファベットを一字入力してください:");
    scanf("%s",ch);

    no = str_char("ABCDEFGHIJKLMNOPQRSTUVWXYZ"  "abcdefghijklmnopqrstuvwxyz",ch[0]);

    if(no >= 0 && no <= 25)
        printf("それは英大文字の%d番目です。\n",no + 1);
    else if (no >= 26 && no <= 51 )
        printf("それは英小文字の%d番目です。\n",no - 25);
    else
        printf("それは英文字ではありません。\n");

    return 0;
}


    

実行結果

アルファベットを一字入力してください:M
それは英大文字の13番目です。
アルファベットを一字入力してください:t
それは英小文字の20番目です。
アルファベットを一字入力してください:8
それは英文字ではありません。

関数str_charは、「配列sの要素のうち、最も先頭に格納されている文字cの添字の値を返す」関数である。行っているのは、文字cを探すことであり、線形探索と同じ原理である。

本プログラムは、大文字のA~Zと小文字a~zを並べた文字列から探索を行う。
探索するのは、キーボードから入力された文字列の先頭文字である。

参考)新・解きながら学ぶC言語 第2版 柴田望洋 (監修・著), 由梨かおる(著)SBクリエイティブ

コメント

タイトルとURLをコピーしました