C 庫函數 - strcmp() 描述 C 庫函數 int strcmp(const char *str1, const char *str2) 把 str1 所指向的字元串和 str2 所指向的字元串進行比較。 聲明 下麵是 strcmp() 函數的聲明。 int strcmp(const cha ...
C 庫函數 - strcmp()
描述
C 庫函數 int strcmp(const char *str1, const char *str2) 把 str1 所指向的字元串和 str2 所指向的字元串進行比較。
聲明
下麵是 strcmp() 函數的聲明。
int strcmp(const char *str1, const char *str2)
參數
- str1 -- 要進行比較的第一個字元串。
- str2 -- 要進行比較的第二個字元串。
返回值
該函數返回值如下:
- 如果返回值小於 0,則表示 str1 小於 str2。
- 如果返回值大於 0,則表示 str1 大於 str2。
- 如果返回值等於 0,則表示 str1 等於 str2。
模擬實現
比較方式,依次比較ascii大小,大返回正數,小於返回負數,等於則比較下一位。若全都相等則返回0;
1.0
my_strcmp 1.0 版本
#include<stdio.h>
#include<assert.h>
int my_strcmp(const char*str1, const char*str2)
{
assert(str1&&str2);
//依次比較ascii大小
while (*str1 == *str2)
{
//相等且都為'\0'
if (str1 == '\0')
{
return 0;
}
str1++;
str2++;
}
return(*str1 - *str2);
}
int main()
{
char* str1 = "aaaa";
char* str2 = "bbbb";
int ret = my_strcmp(str1, str2);
printf("%d\n", ret);
return 0;
}
2.0
#include<stdio.h>
#include<assert.h>
int my_strcmp (const char * src, const char * dst)
{
int ret = 0 ;
assert(src != NULL);
assert(dest != NULL);
//以字元類型(以位元組為單位)進行整型計算
while( *dst && *src && !(ret = *(unsigned char *)src - *(unsigned char *)dst) )
++src, ++dst;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
本文來自博客園,作者:HJfjfK,原文鏈接:https://www.cnblogs.com/DSCL-ing/p/18342326