Fork me on GitHub

随笔 - 997  文章 - 5  评论 - 181  阅读 - 300万 

 前言:

 

 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 }
复制代码

 

posted on   虚生  阅读(4504)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
历史上的今天:
2017-11-18 win10 插入16k采样的耳机无法播放和录音的问题定位
点击右上角即可分享
微信分享提示