#include<stdio.h>
// 字符串比较:相等的情况ASCII值相同,相减后RES是0,不等的情况下返回一个数字
int strcmp(char *p1, char *p2)
{
int res = 0; //初始res = 0
for(; *p1 != '\0' || *p2 != '\0'; p1++, p2++) //将两个字符串的每一元素进行比较
{
if(*p1 != *p2) // 出现第一个不相等元素时
{
res = *p1 - *p2; // res的值改变,为两个字母ASCLL相减的值
break; //中止循环
}
}
return res; //如果两个字符串全部相等,则不进入循环,最终返回值res不变仍为0.
}
_Bool strcmp1(char *s1,char *s2)
{
while(*s1 != '\0'&& *s2 != '\0') //如果两个指针所指向的字符都不是空字符
if(*s1++ != *s2++)
return 0;
//循环结束后,有可能两个字符串是部分相同的(部分相同还是不同,返回零)
return *s1 == *s2; //最终两个空字符,判断后相等,返回1
}
int main()
{
char str1[20], *p1;
char str2[20], *p2;
scanf("%s",&str1);
scanf("%s",&str2);
p1 = str1; // p1 = str1 <=> p1 = &str1[0]
p2 = str2;
int res = strcmp(p1,p2);
int res1 = strcmp1(p1,p2);
printf("%d\n",res);
printf("%d\n",res1);
return 0;
}
两种方法判断