strncmp 僅比較前 n 個字符,若前 n 字符相同則返回 0,否則返回差值。
int my_strncmp(const char *s1, const char *s2, size_t n) {
assert(s1 && s2);
while (n-- && *s1 && *s1 == *s2) { s1++; s2++; }
return n == (size_t)-1 ? 0 : *s1 - *s2; // n 歸零表示前 n 字符相同
}
int main() {
char *a = "abcdeff", *b = "abcd";
int len = strlen(a);
int r = my_strncmp(a, b, len);
printf("%d\n", r); // 非 0,因長度不同
return 0;
}
n 大於任一字符串長度,遇到 '\0' 會提前停止。