logo

2 つの文字列を比較する C プログラム

文字列は、string 関数を使用しても、string 関数を使用しなくても比較できます。まず、文字列関数を使用して文字列を比較する方法を見ていきます。 strcmp()、 で定義されている string.h ヘッダファイル。

string関数を使用した文字列比較

で事前に定義されている文字列関数 string.h ヘッダー ファイルは strcmp() 関数。 strcmp() 関数は 2 つの文字列をパラメータとして考慮し、この関数は整数値を返します。整数値は次のとおりです。 ゼロポジティブ または ネガティブ

strcmp() 関数の構文は次のとおりです。

 int strcmp (const char* str1, const char* str2); 

上記の構文では、2 つのパラメーターが文字列として渡されます。 str1 そして str2 、戻り値の型は 整数 strcmp() が整数値を返すことを意味します。

strcmp() 関数は、両方の文字列の文字を比較します。両方の文字列の最初の文字が同じである場合、この比較プロセスは、すべての文字が比較されるか、ポインタがヌル文字「」を指すまで継続されます。

strcmp() 関数からの可能な戻り値

戻り値 説明
0 両方の文字列が等しい場合。
<0< td> 最初の文字列の文字の ASCII 値が 2 番目の文字列の文字の ASCII 値より小さい場合、関数は負の値を返します。
>0 最初の文字列の文字の ASCII 値が 2 番目の文字列の文字の ASCII 値より大きい場合、関数は正の値を返します。

例を通して理解しましょう。

 #include #include int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array int value; // declaration of integer variable printf(&apos;Enter the first string : &apos;); scanf(&apos;%s&apos;,str1); printf(&apos;Enter the second string : &apos;); scanf(&apos;%s&apos;,str2); // comparing both the strings using strcmp() function value=strcmp(str1,str2); if(value==0) printf(&apos;strings are same&apos;); else printf(&apos;strings are not same&apos;); return 0; } 

上記プログラムの解析

  • char 型の 2 つの配列、つまり str1 と str2 を宣言しました。ユーザー入力を文字列として受け取ります。
  • を使用して文字列を比較します。 strcmp() 関数、つまり、 strcmp(str1,str2)。 この関数は、文字列 str1 と str2 の両方を比較します。関数が値 0 を返す場合、両方の文字列が同じであることを意味します。それ以外の場合、文字列は等しくありません。

出力:

2 つの文字列を比較する C プログラム
2 つの文字列を比較する C プログラム

strcmp()関数を使用しない文字列比較

 #include int compare(char[],char[]); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf(&apos;Enter the first string : &apos;); scanf(&apos;%s&apos;,str1); printf(&apos;Enter the second string : &apos;); scanf(&apos;%s&apos;,str2); int c= compare(str1,str2); // calling compare() function if(c==0) printf(&apos;strings are same&apos;); else printf(&apos;strings are not same&apos;); return 0; } // Comparing both the strings. int compare(char a[],char b[]) { int flag=0,i=0; // integer variables declaration while(a[i]!=&apos;&apos; &amp;&amp;b[i]!=&apos;&apos;) // while loop { if(a[i]!=b[i]) { flag=1; break; } i++; } if(flag==0) return 0; else return 1; } 

上記プログラムの解析

  • 上記では、char 型の 2 つの配列を宣言し、ユーザー入力を文字列として受け取ります。
  • ユーザー入力文字列をパラメータとして受け取り、両方の文字列を比較する Compare() 関数を定義しました。関数が 0 を返した場合、これは両方の文字列が等しいことを意味します。それ以外の場合、両方の文字列は等しくありません。

出力:

2 つの文字列を比較する C プログラム

ポインタを使用した文字列比較

 #include int stringcompare(char*,char*); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf(&apos;Enter the first string : &apos;); scanf(&apos;%s&apos;,str1); printf(&apos;
Enter the second string : &apos;); scanf(&apos;%s&apos;,str2); int compare=stringcompare(str1,str2); // calling stringcompare() function. if(compare==0) printf(&apos;strings are equal&apos;); else printf(&apos;strings are not equal&apos;); return 0; } // Comparing both the strings using pointers int stringcompare(char *a,char *b) { int flag=0; while(*a!=&apos;&apos; &amp;&amp; *b!=&apos;&apos;) // while loop { if(*a!=*b) { flag=1; } a++; b++; } if(flag==0) return 0; else return 1; } 

上記プログラムの解析

  • char 型 str1 と str2 の 2 つの配列を作成しました。ユーザー入力を文字列として受け取ります。
  • char 型の 2 つのポインタをパラメータとして受け取る stringcompare() 関数を定義しました。 「a」ポインタは str1 のアドレスを保持し、「b」ポインタは str2 のアドレスを保持します。関数内では、ポインタ a または b が null 文字に到達しないまで実行される while ループを作成しました。

出力:

2 つの文字列を比較する C プログラム