文字列の比較方法には、strcmp関数
やstrncmp関数
を使う方法、または自作関数を使う方法があります。
この記事では、C言語で2つの文字列を比較する方法と注意点について解説します。
目次から探す
文字列の比較方法
文字列を比較する方法にはいくつかの方法があります。
ここでは、C言語でよく使われる3つの方法を紹介します。
strcmp関数を使った比較
strcmp関数
は、2つの文字列を比較するために使用されます。
この関数は、引数として2つの文字列を受け取り、比較結果を整数値として返します。
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello";
char str2[] = "World";
int result = strcmp(str1, str2);
if (result == 0) {
printf("文字列は一致しています\n");
} else {
printf("文字列は一致していません\n");
}
return 0;
}
上記の例では、strcmp関数
を使用してstr1
とstr2
の文字列を比較しています。
strcmp関数
は、2つの文字列が一致している場合には0を返し、一致していない場合には0以外の値を返します。
strncmp関数を使った比較
strncmp関数
は、指定した文字数までの部分文字列を比較するために使用されます。
この関数もstrcmp関数
と同様に、引数として2つの文字列を受け取り、比較結果を整数値として返します。
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello";
char str2[] = "Hell";
int result = strncmp(str1, str2, 4);
if (result == 0) {
printf("文字列は一致しています\n");
} else {
printf("文字列は一致していません\n");
}
return 0;
}
上記の例では、strncmp関数
を使用してstr1
とstr2
の最初の4文字を比較しています。
strncmp関数
は、指定した文字数までの部分文字列が一致している場合には0を返し、一致していない場合には0以外の値を返します。
自作関数を使った比較
C言語では、自分で文字列比較の関数を作成することもできます。
以下は、簡単な自作関数の例です。
#include <stdio.h>
int my_strcmp(const char* str1, const char* str2) {
while (*str1 && (*str1 == *str2)) {
str1++;
str2++;
}
return *(unsigned char*)str1 - *(unsigned char*)str2;
}
int main() {
char str1[] = "Hello";
char str2[] = "World";
int result = my_strcmp(str1, str2);
if (result == 0) {
printf("文字列は一致しています\n");
} else {
printf("文字列は一致していません\n");
}
return 0;
}
上記の例では、my_strcmp
という自作関数を使用してstr1
とstr2
の文字列を比較しています。
自作関数では、ポインタを使用して文字列を比較し、一致している場合には0を返し、一致していない場合には0以外の値を返します。
次のページ文字列比較の注意点