文字列は、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<>
>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('Enter the first string : '); scanf('%s',str1); printf('Enter the second string : '); scanf('%s',str2); // comparing both the strings using strcmp() function value=strcmp(str1,str2); if(value==0) printf('strings are same'); else printf('strings are not same'); return 0; }
上記プログラムの解析
- char 型の 2 つの配列、つまり str1 と str2 を宣言しました。ユーザー入力を文字列として受け取ります。
- を使用して文字列を比較します。 strcmp() 関数、つまり、 strcmp(str1,str2)。 この関数は、文字列 str1 と str2 の両方を比較します。関数が値 0 を返す場合、両方の文字列が同じであることを意味します。それ以外の場合、文字列は等しくありません。
出力:
strcmp()関数を使用しない文字列比較
#include int compare(char[],char[]); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf('Enter the first string : '); scanf('%s',str1); printf('Enter the second string : '); scanf('%s',str2); int c= compare(str1,str2); // calling compare() function if(c==0) printf('strings are same'); else printf('strings are not same'); return 0; } // Comparing both the strings. int compare(char a[],char b[]) { int flag=0,i=0; // integer variables declaration while(a[i]!=' ' &&b[i]!=' ') // while loop { if(a[i]!=b[i]) { flag=1; break; } i++; } if(flag==0) return 0; else return 1; }
上記プログラムの解析
- 上記では、char 型の 2 つの配列を宣言し、ユーザー入力を文字列として受け取ります。
- ユーザー入力文字列をパラメータとして受け取り、両方の文字列を比較する Compare() 関数を定義しました。関数が 0 を返した場合、これは両方の文字列が等しいことを意味します。それ以外の場合、両方の文字列は等しくありません。 。
出力:
ポインタを使用した文字列比較
#include int stringcompare(char*,char*); int main() { char str1[20]; // declaration of char array char str2[20]; // declaration of char array printf('Enter the first string : '); scanf('%s',str1); printf(' Enter the second string : '); scanf('%s',str2); int compare=stringcompare(str1,str2); // calling stringcompare() function. if(compare==0) printf('strings are equal'); else printf('strings are not equal'); return 0; } // Comparing both the strings using pointers int stringcompare(char *a,char *b) { int flag=0; while(*a!=' ' && *b!=' ') // 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 ループを作成しました。
出力: