【面试题】C语言:模拟实现memcmp,试比较memcmp与strcmp,strncmp的区别
生活随笔
收集整理的這篇文章主要介紹了
【面试题】C语言:模拟实现memcmp,试比较memcmp与strcmp,strncmp的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
????模擬實現內存比較函數memcmp:
????該函數與strcmp有相似之處,都可用于字符串比較是否相同,若相同,則返回0值。若前者大于后者,則返回大于0的整型值,否則返回小于0的整型值。
????區別在于:
????strcmp只能比較字符串,memcmp是內存比較函數,原則上是比較內存的,但其實真正實現時并不是所有都可以比較,例如float,但我們至少可以比較字符串以及int型。
????而對于strcmp,strncmp的比較:str1, str2 為需要比較的兩個字符串,n為要比較的字符的數目,而函數strcmp()做不到,strcmp()可以比較全部字符串(因為它找字符串結束標志‘\0’)。
????關于strcmp的實現,可以查看我的博客http://10740184.blog.51cto.com/10730184/1714512
????關于strncmp的實現,可以查看我的博客http://10740184.blog.51cto.com/10730184/1715207
????代碼如下:
????
#define?_CRT_SECURE_NO_WARNINGS?1 #include<stdio.h> #include<stdlib.h> #include<assert.h>int?my_memcmp(const?void?*p1,?const?void?*p2,?size_t?count) {assert(p1);assert(p2);char?*dest?=?(char?*)p1;char?*src?=?(char?*)p2;while?(count?&&?*dest?==?*src){count--;dest++;src++;}if?(count?==?0){return?0;}????else{return?*dest??-?*src?-?‘\0’;}}int?main() {/*int?arr1[]?=?{?1,?3,?20,?5?};????????????//比較整型int?arr2[]?=?{?1,?3,?10,?7?};*/char?arr1[]?=?"hello";????????????????????//比較字符串char?arr2[]?=?"hello?world";int?len?=?sizeof(arr1)?/?sizeof(arr1[0]);int?ret?=?my_memcmp(arr1,?arr2,?12);printf("%d",?ret);system("pause");return?0; }轉載于:https://blog.51cto.com/10740184/1715695
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【面试题】C语言:模拟实现memcmp,试比较memcmp与strcmp,strncmp的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php+mysql+pdo连接数据库
- 下一篇: Swift 函数和类