C语言实现字符串操作函数
在编写程序的过程中,我们经常会使用到一些字符串函数,比如求字符串长度、判断字符串相等等等,这额函数都在C语言标准库中存在,我们可以直接使用。但我们还需要掌握这些函数的编写过程和实现方法,今天我们一起回顾一些字符串操作函数的实现方法。第三个是strcmp
strcmp
strcmp(字符串1,字符串2)
作用:比较字符串1和字符串2。两个字符串从左至右逐个字符比较(按照字符的ASCII码值的大小)(即减法比较),直到字符不同或者遇见’\0’为止。
如果全部字符都相同,则返回值为0。
如果不相同,则返回两个字符串中第一个不相同的字符的ASCII码值的差,即字符串1大于字符串2时函数值为正,否则为负。
编写实现的思路:首先判断参数入参有效性,因为函数返回类型是int,所以即使参数错误返回也应该为int类型。
循环的判断条件为(*str1!='\0')&&(*str1==*str2),实际上当str1或者str2为结束符'\0'或者str1和str2不再相等时,则退出循环。
换种理解方式就是,当当前判断的字符不为'\0',并且相等两字符串当前的字符相等,则*str++后执行下一次判断,一旦不相等则进行比较大小。剩下的if就比较简单了,主要还是循环的判断条件要写对。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int my_strcmp(char str1[], char str2[])
{
int nNum1, nNum2;
int value;
nNum1 = strlen(str1);
nNum2 = strlen(str2);
if (nNum1 == nNum2)
{
for (int i = 0; i < nNum2; i++)
{
value = str1[i] - str2[i];
if (value == 0)
{
return 0;
}
else if (value > 0)
{
return 1;
}
else
{
return -1;
}
}
}
else if (nNum1 > nNum2)
{
return 1;
}
return -1;
}
int main()
{
int nNum1, nNum2;
char strAry1[30] = "I like beijing";
char strAry2[30] = "I like beijingm";
nNum1 = my_strcmp(strAry1, strAry2);
nNum2 = strcmp(strAry1, strAry2);
system("pause");
return 0;
}
上述代码的返回值并非返回两个字符串中第一个不相同的字符的ASCII码值的差,即字符串1大于字符串2时函数值为正,否则为负。而只是简单地+1、-1和0。