C 语言中比较大小的三种函数:strcmp()、strncmp()、memcmp()163


在 C 编程语言中,比较两个字符串或内存块的大小至关重要。C 语言提供了三个常用的函数来执行此操作:strcmp()、strncmp() 和 memcmp()。这些函数对于各种应用程序非常有用,包括文本处理、数据排序和内存分配。

strcmp() 函数

strcmp() 函数用于比较两个 null 终止的字符串。它比较字符串的每个字符,直到找到不匹配的字符或到达字符串末尾。如果两个字符串相同,则 strcmp() 返回 0。如果第一个字符串大于第二个字符串,则返回一个正整数。如果第二个字符串大于第一个字符串,则返回一个负整数。

语法:int strcmp(const char *str1, const char *str2);

strncmp() 函数

strncmp() 函数类似于 strcmp(),但它只比较字符串的前 n 个字符。这对于需要比较字符串的开头部分的应用程序很有用,例如搜索引擎或文件系统。如果前 n 个字符相等,则 strncmp() 返回 0。如果第一个字符串大于第二个字符串,则返回一个正整数。如果第二个字符串大于第一个字符串,则返回一个负整数。

语法:int strncmp(const char *str1, const char *str2, size_t n);

memcmp() 函数

memcmp() 函数用于比较两个内存块。与 strcmp() 和 strncmp() 不同,memcmp() 不依赖于 null 终止符。它比较指定数量的字节,并根据第一个不同的字节返回一个值。如果两个内存块相同,则 memcmp() 返回 0。如果第一个内存块大于第二个内存块,则返回一个正整数。如果第二个内存块大于第一个内存块,则返回一个负整数。

语法:int memcmp(const void *ptr1, const void *ptr2, size_t n);

选择合适的函数

选择要使用的函数取决于要比较的类型和所需的行为。以下是一些一般指南:* 比较两个 null 终止的字符串:使用 strcmp()。
* 比较字符串的前 n 个字符:使用 strncmp()。
* 比较两个内存块,无论是否 null 终止:使用 memcmp()。

示例

以下示例演示了 strcmp()、strncmp() 和 memcmp() 函数的用法:```c
#include
#include
int main() {
char str1[] = "Hello";
char str2[] = "World";
char buf1[] = {0x01, 0x02, 0x03, 0x04, 0x05};
char buf2[] = {0x01, 0x02, 0x03, 0x04, 0x06};
printf("strcmp(str1, str2): %d", strcmp(str1, str2)); // 输出: -1
printf("strncmp(str1, str2, 3): %d", strncmp(str1, str2, 3)); // 输出: 0
printf("memcmp(buf1, buf2, sizeof(buf1)): %d", memcmp(buf1, buf2, sizeof(buf1))); // 输出: -1
return 0;
}
```

输出:```
strcmp(str1, str2): -1
strncmp(str1, str2, 3): 0
memcmp(buf1, buf2, sizeof(buf1)): -1
```

2025-02-17


上一篇:C 语言中使用子函数计算平均值

下一篇:C 语言输出姓氏