zoukankan      html  css  js  c++  java
  • strcmp函数和memcmp函数的用法区别及联系

     前言:

     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 
    	 ",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 
    	 ",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 
    	 ",retb);
    24 
    25         return 0;
    26 }
  • 相关阅读:
    为什么用strlcpy取代strncpy
    linux系统调用和库函数调用的区别
    VC、PE和天使投资是什么意思?有什么区别?
    AWS使用心得:当初我曾错过的那些宝贵经验
    bzoj 2208: [Jsoi2010]连通数
    android学习笔记(5)Activity生命周期学习
    Nginx 进程间通信
    手写一个节点大小平衡树(SBT)模板,留着用
    JavaFX学习之道:JavaFX之TableView
    Docker 命令行和后台參数
  • 原文地址:https://www.cnblogs.com/dylancao/p/11881694.html
Copyright © 2011-2022 走看看