大神帮忙解释一个C语言程序哈,是实现STRCMP函数功能的
答案:2 悬赏:10 手机版
解决时间 2021-01-04 11:38
- 提问者网友:你独家记忆
- 2021-01-03 20:11
#include
int main()
{
int m;
char str1[20],str2[20],*p1,*p2;
printf("input two strings:\n");
scanf("%s",str1);
scanf("%s",str2);
p1=&str1[0];
p2=&str2[0];
m=strcmp(p1,p2);
printf("the result is %d",m);
return 0;
}
strcmp(char *p1,char *p2)
{
int i;
i=0;
while(*(p1+i)==*(p2+i))
if(*(p1+i++)=='\0') return 0; //(p1+i++)是啥子意思?
return(*(p1+i)-*(p2+i));
}
最佳答案
- 五星知识达人网友:狂恋
- 2021-01-03 20:53
if(*(p1+i++)=='\0') return 0; //(p1+i++)是啥子意思?
这句其实写成两句更为清楚些,这只是一些开发熟手的代码简单写法。不推崇,不反对!
以下为可理解代码:
while(*(p1+i)==*(p2+i))
{
if(*(p1+i)=='\0') //如果到了串1的结尾,则返回两串相等。 说明此函数只是检查p1串是否是p2串的前i位,而不能完全检查两串的数据差别。即:p2串长度大于p1串时,前i位相同,则返回两串相同。
return 0;
i++; //取下一位
}
全部回答
- 1楼网友:末日狂欢
- 2021-01-03 22:08
strcmp是字符串比较函数,调用形式为strcmp(字符串1,字符串2);
功能:字符串1与字符串2比较,如果字符串1==字符串2,则函数值为0,1大于2,则为正整数,1小于2,则为负整数;
从两个字符串的第一个字符开始逐个进行比较(按照ascii码 的大小进行比较),之道出现不同的字符或遇到“\0”为止。例如:char*str1=hello,*str2=void;则strcmp(str1,str2)<0;因为‘h’<'v';
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯