C言語,strcasecmp()関数で文字の大小を区別せずに比較

スポンサーリンク

鍛錬 883

C言語,strcasecmp()関数で文字の大小を区別せずに比較

strcasecmp()関数を使用すると、文字の大文字小文字を区別せずに、2つの文字列を比較することができます。
 
以下は、strcasecmp()関数についてです。

#include <strings.h>

int strcasecmp(const char *s1, const char *s2);
 

引数

以下は、上記の引数についてです。

引数 意味
const char *s1 比較する文字列(1)
const char *s2 比較する文字列(2)

戻り値

以下は、戻り値についてです。

戻り値
int s1 が s2 よりも小さい 負の整数
int s1 と s2 が等しい 0
int s1 が s2 よりも大きい 正の整数
スポンサーリンク

プログラム

以下は、大文字小文字を区別せずに文字列を比較するプログラム、test_strcasecmp.c です。

今回は、次の文字列を比較しています。

1回目の比較

文字列(1) 文字列(2)
ABC abc

2回目の比較

文字列(1) 文字列(2)
ABC 123
// include
#include <stdio.h>
#include <string.h>
#include <strings.h>

// main
int main(void)
{
	char str_1[256] = "";
	char str_2[256] = "";
	int ret;
	
	// 大文字小文字を区別せずに文字列を比較する
	
	// 1回目の比較
	strncpy(str_1, "ABC", sizeof(str_1) - 1);
	strncpy(str_2, "abc", sizeof(str_2) - 1);
	ret = strcasecmp(str_1, str_2);
	if (ret == 0) {
		printf("%s と %s は等しい(大文字小文字の区別なし)\n", str_1, str_2);
	}
	else {
		printf("%s と %s は異なる(大文字小文字の区別なし)\n", str_1, str_2);
	}
	
	// 2回目の比較
	strncpy(str_1, "ABC", sizeof(str_1) - 1);
	strncpy(str_2, "123", sizeof(str_2) - 1);
	ret = strcasecmp(str_1, str_2);
	if (ret == 0) {
		printf("%s と %s は等しい(大文字小文字の区別なし)\n", str_1, str_2);
	}
	else {
		printf("%s と %s は異なる(大文字小文字の区別なし)\n", str_1, str_2);
	}
	
	return 0;
}
スポンサーリンク

実行結果

以下は、プログラム test_strcasecmp.c を実行しています。

***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ gcc -Wall -Wextra test_strcasecmp.c -o test_strcasecmp
***@ubuntu:~/***/test/c$ ./test_strcasecmp
ABC と abc は等しい(大文字小文字の区別なし)
ABC と 123 は異なる(大文字小文字の区別なし)

 
上記に示した通り、大文字小文字を区別せずに文字列を比較することができました。

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