strncmp
|
ヘッダーで定義
<string.h>
|
||
|
int
strncmp
(
const
char
*
lhs,
const
char
*
rhs,
size_t
count
)
;
|
||
最大で count 文字の、null終端されている可能性のある2つの配列を比較します。比較は辞書順で行われます。null文字以降の文字は比較されません。
結果の符号は、比較される配列内で異なる最初の文字のペア(両方とも unsigned char として解釈される)の値の差の符号です。
いずれかの配列 lhs または rhs の終端を超えてアクセスが発生した場合、動作は未定義です。 lhs または rhs のいずれかがヌルポインタである場合、動作は未定義です。
目次 |
パラメータ
| lhs, rhs | - | 比較対象のnull終端配列へのポインタ(null終端の可能性あり) |
| count | - | 比較する最大文字数 |
戻り値
負の値は、 lhs が辞書順で rhs より前に現れる場合を示します。
lhs と rhs が等しい場合、またはcountがゼロの場合、ゼロを返します。
lhs が rhs より辞書順で後に現れる場合、正の値。
注記
この関数はロケール依存ではなく、 strcoll および strxfrm とは異なります。
例
#include <stdio.h> #include <string.h> void demo(const char* lhs, const char* rhs, int sz) { const int rc = strncmp(lhs, rhs, sz); if (rc < 0) printf("First %d chars of [%s] precede [%s]\n", sz, lhs, rhs); else if (rc > 0) printf("First %d chars of [%s] follow [%s]\n", sz, lhs, rhs); else printf("First %d chars of [%s] equal [%s]\n", sz, lhs, rhs); } int main(void) { const char* string = "Hello World!"; demo(string, "Hello!", 5); demo(string, "Hello", 10); demo(string, "Hello there", 10); demo("Hello, everybody!" + 12, "Hello, somebody!" + 11, 5); }
出力:
First 5 chars of [Hello World!] equal [Hello!] First 10 chars of [Hello World!] follow [Hello] First 10 chars of [Hello World!] precede [Hello there] First 5 chars of [body!] equal [body!]
参考文献
- C23規格 (ISO/IEC 9899:2024):
-
- 7.24.4.4 strncmp関数 (p: TBD)
- C17規格 (ISO/IEC 9899:2018):
-
- 7.24.4.4 strncmp関数 (p: TBD)
- C11規格 (ISO/IEC 9899:2011):
-
- 7.24.4.4 strncmp関数 (p: 366)
- C99規格 (ISO/IEC 9899:1999):
-
- 7.21.4.4 strncmp関数 (p: 329)
- C89/C90標準 (ISO/IEC 9899:1990):
-
- 4.11.4.4 strncmp関数
関連項目
|
2つの文字列を比較する
(関数) |
|
|
(C95)
|
2つのワイド文字列から指定された数の文字を比較する
(関数) |
|
2つのバッファを比較する
(関数) |
|
|
現在のロケールに従って2つの文字列を比較する
(関数) |
|
|
C++ documentation
for
strncmp
|
|