实现strcmp
【参考答案】
int mystrcmp(const char* str1, const char* str2)
{
assert((str1 != NULL) && (str2 != NULL));
int ret = 0;
while (!(ret = *(unsigned char*)str1 - *(unsigned char*)str2) && *str2)
{
str1++;
str2++;
}
if (ret > 0)
ret = 1;
else if (ret < 0)
ret = -1;
return ret;
}
我的思考:
- 先输入两个字符串,用字符数组来存储和字符指针来移动;
- 利用两个字符比较不相等和不为空来循环遍历;
- 当判断到有字符不同时:利用字符运算比较;
- 通过比较结果,输出显示。
【我的完整代码】
#include <stdio.h>
void mycmp(char *str1,char *str2);
int main(int argc, char *argv[])
{
char a[64]={0};
char b[64]={0};
printf("请输入两个字符串:");
gets(a);
gets(b);
printf("输入的两个字符串分别是:%s %s\n",a,b);
mycmp(a,b);
return 0;
}
void mycmp(char *str1,char *str2)
{
int temp = 0;
while((str1 != NULL)&&(str1 == str2))
{
str1++;
str2++;
}
temp = str1-str2;
if(0 == temp)
printf("both are same big\n");
else if(0 > temp)
printf("%s is bigger\n",str1);
else
printf("%s is bigger\n",str2);
}