目录
1. Compare characters of two strings
1. Compare characters of two strings
#include <string.h>
int strncmp ( const char * str1, const char * str2, size_t num );
Compares up to num characters of the C string str1 to those of the C string str2.
This function starts comparing the first character of each string. If they are equal to each other, it continues with the following pairs until the characters differ, until a terminating null-character is reached, or until num characters match in both strings, whichever happens first.
上述内容是 cplusplus 对 strncmp 函数的介绍,
与 strcmp 函数不同的是,有了比较字符个数的限制。(ps:strcmp函数实现)
2. 源代码
#include <stdio.h>
#include <assert.h>
#define MAX_CMP_CNT 2
int Strncmp(const char *str1, const char *str2, size_t count) {
assert((NULL != str1) && (NULL != str2));
if (0 == count)
return 0;
while ((count--) && ('\0' != *str1) && (*str1 == *str2)) {
++str1;
++str2;
}
return *str1 - *str2;
}
void test() {
char str1[] = "abcde";
char str2[] = "bcd";
int ret = strncmp(str1, str2, 0);
if (ret > 0)
printf("call Strncmp 0 bytes, str1: %s > str2: %s\n", str1, str2);
else if (0 == ret)
printf("call Strncmp 0 bytes, str1: %s == str2: %s\n", str1, str2);
else
printf("call Strncmp 0 bytes, str1: %s < str2: %s\n", str1, str2);
ret = strncmp(str1, str2, MAX_CMP_CNT);
if (ret > 0)
printf("call Strncmp %d bytes, str1: %s > str2: %s\n", MAX_CMP_CNT, str1, str2);
else if (0 == ret)
printf("call Strncmp %d bytes, str1: %s == str2: %s\n", MAX_CMP_CNT, str1, str2);
else
printf("call Strncmp %d bytes, str1: %s < str2: %s\n", MAX_CMP_CNT, str1, str2);
}
int main(void) {
test();
return 0;
}
3. 输出结果
call Strncmp 0 bytes, str1: abcde == str2: bcd
call Strncmp 2 bytes, str1: abcde < str2: bcd