C言語,strncmp()関数で指定したバイト数の文字列を比較

スポンサーリンク

鍛錬 746

C言語,strncmp()関数で指定したバイト数の文字列を比較

バイト数(文字数)を指定して2つの文字列を比較する方法の一つとして、strncmp()関数を使用する方法があります。
 
以下は、strncmp()関数についてです。

#include <string.h>

int strncmp(const char *s1, const char *s2, size_t n);
 

引数

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

引数 意味
const char *s1 1つ目の比較する文字列
const char *s2 2つ目の比較する文字列
size_t n 先頭から比較するバイト数

戻り値

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

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

プログラム

以下は、2つの文字列を比較するプログラム、test_strncmp.c です。

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

順序 文字列1 文字列2 比較する文字数
1回目の比較 ABCDEFG ABCYYYY 3文字
2回目の比較 ABCDEFG ABCYYYY 4文字
// include
#include <stdio.h>
#include <string.h>

// main
int main(void)
{
	char str_1[256] = "";
	char str_2[256] = "";
	int ret;
	
	// 文字列を格納
	strncpy(str_1, "ABCDEFG", sizeof(str_1) - 1);
	strncpy(str_2, "ABCYYYY", sizeof(str_2) - 1);
	
	// 文字列を比較(先頭から3文字)
	ret = strncmp(str_1, str_2, 3);
	if (ret == 0) {
		printf("[%s] == [%s]\n", str_1, str_2);
	}
	else if (ret > 0) {
		printf("[%s] > [%s]\n", str_1, str_2);
	}
	else if (ret < 0) {
		printf("[%s] < [%s]\n", str_1, str_2);
	}
	
	// ----------------------------------------------------
	
	// 文字列を比較(先頭から4文字)
	ret = strncmp(str_1, str_2, 4);
	if (ret == 0) {
		printf("[%s] == [%s]\n", str_1, str_2);
	}
	else if (ret > 0) {
		printf("[%s] > [%s]\n", str_1, str_2);
	}
	else if (ret < 0) {
		printf("[%s] < [%s]\n", str_1, str_2);
	}
	
	return 0;
}

実行結果

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

***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ gcc -Wall -Wextra test_strncmp.c -o test_strncmp
***@ubuntu:~/***/test/c$ ./test_strncmp
[ABCDEFG] == [ABCYYYY]
[ABCDEFG] < [ABCYYYY]

 
上記に示した通り、2つの文字列について、指定したバイト数だけ文字列を比較することができました。

スポンサーリンク

シェアする

フォローする