Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語のstrncmp関数とは?使い方とサンプルコードをわかりやすく解説

strncmp関数とは

C標準ライブラリの関数 int strncmp(const char *str1, const char *str2, size_t n) は、str1str2 の先頭から最大 n バイト(n文字)を比較する関数です。C言語では、文字の配列のことを「文字列」と呼びます。

文字列の宣言

文字列(配列)を宣言するための基本的な構文は次のとおりです。

char stringname [size];

たとえば char string[50]; と宣言すると、長さ50文字分の文字列を格納できる領域が確保されます。

文字列の初期化

文字列の初期化には、主に以下の2つの方法があります。

1文字ずつ指定して初期化する方法

char string[10] = { 'H', 'e', 'l', 'l', 'o', '\0' };

文字列リテラルで初期化する方法

char string[10] = "Hello";

アクセス方法: 書式指定子 "%s" を使用すると、終端文字 '\0' に到達するまで文字列として読み書きすることができます。

strncmp関数の使い方

strncmp関数は、2つの文字列の先頭 n 文字だけを比較したい場合に使用します。戻り値の意味は以下のとおりです。

  • 0:先頭n文字が等しい
  • 正の値:string1 の方が辞書順で大きい
  • 負の値:string1 の方が辞書順で小さい

構文

strncmp(string1, string2, n)

簡単な例

char a[10] = "the";
char b[10] = "there";
strncmp(a, b, 3);

この例では、先頭3文字("the")が一致しているため、「両方の文字列は等しい」という結果になります。

strncmpを使ったサンプルプログラム

以下は、strncmpライブラリ関数を使用して、2つの文字列の先頭4文字を比較するCプログラムの例です。

#include<stdio.h>
#include<string.h>
void main(){
    //2つの文字列を宣言//
    char string1[25],string2[25];
    int value;
    //文字列1と文字列2を入力//
    printf("Enter String 1: ");
    gets(string1);
    printf("Enter String 2: ");
    gets(string2);
    //ライブラリ関数で比較//
    value = strncmp(string1,string2,4);
    //条件分岐による結果表示//
    if(value==0){
       printf("%s is same as %s",string1,string2);
    }
    else if(value>0){
       printf("%s is greater than %s",string1,string2);
    } else {
       printf("%s is less than %s",string1,string2);
    }
}

※補足:gets() はバッファオーバーフローの危険があるため、現在では非推奨の関数です。実務では fgets() を使うことが推奨されています。

実行結果

上記のプログラムを実行すると、次のような結果が出力されます。

Run1:
Enter String 1: Welcome
Enter String 2: TO my World
Welcome is greater than TO my World
Run 2:
Enter String 1: welcome
Enter String 2: welcome
welcome is same as welcome

まとめ

strncmp関数は、strcmp関数と違い比較する文字数を指定できるため、文字列の一部分だけを比較したい場合に非常に便利です。また、大文字と小文字は区別して比較される点にも注意しましょう。

  1. C言語のstrcmp()関数とは?文字列比較の基本と使い方を徹底解説

    C言語の標準ライブラリ関数 int strcmp(const char *str1, const char *str2) は、ポインタ str1 が指し示す文字列と、str2 が指し示す文字列を比較するための関数です。C言語において、文字型の配列は「文字列」と呼ばれます。まずは文字列の基本的な扱い方から確認していきましょう。文字列の宣言文字列(文字配列)の宣言は以下のように行います。char stringname [size];例えば、char string[50]; と宣言すれば、最大50文字の長さを持つ文字列を格納できます。文字列の初期化文字列の初期化には、主に次の2つの方法があります。1

  2. C言語のstrcpy()関数とは?基本構文と使い方をわかりやすく解説

    C言語のライブラリ関数 char *strcpy(char *dest, const char *src) は、src が指し示す文字列を dest にコピーするための関数です。 C言語では、文字の配列のことを「文字列」と呼びます。 文字列の宣言 文字列(文字配列)の宣言は、以下の形式で行います。 char stringname[size]; 例えば char string[50]; と宣言すると、最大50文字の文字列を格納できる配列が確保されます。 文字列の初期化 文字列の初期化には、主に以下の2つの方法があります。 1. 文字定数を使う方法 char string[10] = {H,