求教,c语言 写一个函数,实现两个字符串的比较。即自己写一个strcmp函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教,c语言 写一个函数,实现两个字符串的比较。即自己写一个strcmp函数相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
int main()
int strcmp(char *p1,char *p2);
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("result:%d,\n",m);
return 0;


int strcmp(char *p1,char *p2)
int i;
i=0;
while(*(p1+i)==*(p2+i))
if (*(p1+i++)=='\0') return(0);
return(*(p1+i)-*(p2+i));


这个后面的
while(*(p1+i)==*(p2+i))
if (*(p1+i++)=='\0') return(0)
return(*(p1+i)-*(p2+i));
是什么意思

参考技术A 首先要理解指针的含义,即*p代表的是p[0] *(p+1)代表的是p[1],

在这个基础上,我们来看上面两行代码
while(*(p1+i)==*(p2+i))
if (*(p1+i++)=='\0') return(0);
注意到这一个while,也就是说这一段的作用是找到两个字符串第一个不相等的地方的位置,如果找到了‘\0’,即找到了字符串的最后一位的话,就return 0,表示两个字符串相等,当两个字符串不相等退出while之后,i代表的就是他们第一个不相等的位置return(*(p1+i)-*(p2+i)); 将其差return出去如果大于0,则表示前字符串大,小于零表示后字符串大。

ps:我觉得第二个if判断有点片面,还要判断p2是不是查到了'\0'追问

这个
while(*(p1+i)==*(p2+i))
if (*(p1+i++)=='\0') return(0);
翻译过来的话要怎么理解?

当p1[i]等于p2[i]时执行下列循环;

如果p1[I++]等于‘\0’时则结束

是这样么?

追答

对,这两句话的作用是找到两个字符串第一个不相同的字符的位置,翻译过来的话

如果 两个字符串第i个字符相等的话
如果 第i个字符是最后一个字符 return 0;

如果不是 继续判断下一个字符

如果不相等,退出while循环

本回答被提问者采纳

写一些函数,实现两个字符串的比较,即自己写一个strcmp函数,函数原型为int strcmp(c

写一些函数,实现两个字符串的比较,即自己写一个strcmp函数,函数原型为int strcmp(char *p1,char *p2);设p1指向字符串s1,p2指向字符串s2。要求当s1=s2时,返回值为0,若s1!=s2返回 他们二者第一个不同字符的ASCII码差值(如“BOY”与“你“BAD”,第二个字母不同,“O”与“A”之差为79-65=14)。如果s1>s2,则输出正值,如果s1<s2,则输出负值。 )

参考技术A int mystrcmp(char *p1,char *p2)
int i=0;
while(p1[i] && p2[i] && p1[i]==p2[i])
i++;
return p1[i]-p2[i];

以上是关于求教,c语言 写一个函数,实现两个字符串的比较。即自己写一个strcmp函数的主要内容,如果未能解决你的问题,请参考以下文章

写一些函数,实现两个字符串的比较,即自己写一个strcmp函数,函数原型为int strcmp(c

把字符串的增删查改,插入以及删除各种操作封装为一个用c代码写的库,代码怎么写,我写不来求教

C++ 写一个函数,实现两个字符串的比较,即自己写一个strcmp函数

用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为 :int strcmp

写一个函数,实现两个字符串的比较,即自己编写strcmp函数

C语言中:strcmp函数如何使用?