永发信息网

大神帮忙解释一个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';
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯