程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言:模擬實現memcmp,試比較memcmp與strcmp,strncmp的區別

C語言:模擬實現memcmp,試比較memcmp與strcmp,strncmp的區別

編輯:關於C語言

C語言:模擬實現memcmp,試比較memcmp與strcmp,strncmp的區別


模擬實現內存比較函數memcmp:       該函數與strcmp有相似之處,都可用於字符串比較是否相同,若相同,則返回0值。若前者大於後者,則返回大於0的整型值,否則返回小於0的整型值。       區別在於:       strcmp只能比較字符串,memcmp是內存比較函數,原則上是比較內存的,但其實真正實現時並不是所有都可以比較,例如float,但我們至少可以比較字符串以及int型。而對於strcmp,strncmp的比較:str1, str2 為需要比較的兩個字符串,n為要比較的字符的數目,而函數strcmp()做不到,strcmp()可以比較全部字符串(因為它找字符串結束標志‘\0’)。       代碼如下:       
#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 ;
}

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;
}

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved