文字列のコピー(strncmp)
文字列のコピーには strncmp 関数を使用します。
strncmp 関数は、文字列を先頭から指定文字数分比較してその結果を返します。
ただし、null以降の比較は行いません。
s1 > s2 で正の値、s1 < s2 で負の値、s1 = s2で 0 を返します。
この大小関係は一般に文字コード順によります。
strncmp 関数には、セキュリティ拡張版である strncmp_s 関数が存在します。
構文
char *strncmp( const char* s1, // 比較対象の文字列 const char* s2, // 比較対象の文字列 size_t n // 比較する文字数 );
必須ヘッダ
<string.h>
文字列を使用した記述例
// string program in C.
#include <stdio.h>
#include <string.h>
int main(int argc, char *args[])
{
char a1[4] = "xxxx";
char a2[4] = "xxxa";
char a3[4] = "xxxb";
printf("a1 = a1:%d\n", strncmp(a1, a1, sizeof(a1)));
printf("a1 = a3:%d\n", strncmp(a1, a3, sizeof(a1)));
printf("a2 = a3:%d\n", strncmp(a2, a3, sizeof(a1)));
return 0;
}
-
strncmp 関数を使用して変数「a1」、「a2」、「a3」の文字列を比較します。
「a1」同士は同じである為、0が返却されます。
「a1」、「a2」では「a1」の方が大きい為、正の値が返却されます。
「a2」、「a3」では「a3」の方が大きい為、負の値が返却されます。
実行結果
a1 = a1:0
a1 = a3:1
a2 = a3:-1