请问错在哪了?用一个函数实现两个字符串的比较,即自己写一个strcmp函...
发布网友
发布时间:2024-10-03 00:41
我来回答
共1个回答
热心网友
时间:2024-10-06 14:28
错的地方多了!自己要细心点检查~
1)、 f1=strcmp(&s1,&s2); 这地方传值是地址,s1和s2就是地址为什么还要给取地址呢;
2)、printf("%d",f1); 最好要在后面加换行符号 '\n';
3)、 for(i=0;*p1!='\0'||*p2!='\0';i++) 指针比较不是这样的 ,只需要直接判断是否为空就行了,如:*p1 != NULL; 而且在这也不是用 || (或)这个符号,应该使用 &&;
4)、for(i=0;*p1!='\0'||*p2!='\0';i++) for循环中间的条件,是i的范围,不是你那样写的!
5)、子函数中逻辑不分明,有点混乱!代码不够简明!
6)、函数头不要用关键字strcmp这样的,会右冲突;
下面是我对你的代码进行的简单修改:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int strcmp_a(char *p1, char *p2)
{
int i = 0, j = 0, f, sum;
if(p1 != NULL && p2 != NULL){
while(1){
if(p1[i] == p2[i]){
i++; j++;
}else
break;
}
}
if(strlen(p1) >= strlen(p2))
sum = strlen(p1);
else
sum = strlen(p2);
if(i < sum)
f = p1[i] - p2[i];
else
f = 0;
return f;
}
void main()
{
char s1[100],s2[100];
int f1;
printf("请输入一串字符\n");
gets(s1);
printf("请输入另一串字符\n");
gets(s2);
f1=strcmp_a(s1,s2);
printf("%d\n",f1);
}