前言:
C语言中有很多东西容易搞混,最近笔者就遇到了一个问题。这里做个记录。就是memcmp和strcmp两者的用法,这里做个对比:
功能对比:
A memcmp:
函数原型: int memcmp(const void *str1, const void *str2, size_t n));
功能:比较内存区域buf1和buf2的前count个字节。
返回值:
- 如果返回值 < 0,则表示 str1 小于 str2。
- 如果返回值 > 0,则表示 str2 小于 str1。
- 如果返回值 = 0,则表示 str1 等于 str2。
B strcmp函数
函数原型:int
strcmp
(
const
char
*s1,
const
char
*s2);
功能:用于比较两个字符串并根据比较结果返回整数
返回值:
- 如果返回值 < 0,则表示 str1 小于 str2。
- 如果返回值 > 0,则表示 str2 小于 str1。
- 如果返回值 = 0,则表示 str1 等于 str2。
源码对比:
下面这个例子,能够很好的诠释两个函数的用法:
1 #include <stdio.h>
2 #include <string.h>
3
4
5 int main()
6 {
7 unsigned char test1_arr[32] = "hello world";
8 unsigned char test2_arr[32] = "hello world";
9
10 int ret = memcmp(test1_arr,test2_arr,strlen(test1_arr));
11 printf("unsigned char memcmp is:%d \n\t ",ret);
12
13 char test3_arr[32] = "hello world";
14 char test4_arr[32] = "hello world";
15
16 int reta = strcmp(test3_arr,test4_arr);
17 printf("char strcmp is:%d \n\t ",reta);
18
19 unsigned char test5_arr[32] = "hello world";
20 unsigned char test6_arr[32] = "hello world";
21
22 int retb = strcmp(test5_arr,test6_arr);
23 printf("char strcmp is:%d \n\t ",retb);
24
25 return 0;
26 }