c语言这道题怎么做呢,有点晕,没头绪?
{
int i;
i=0;
while(*(p1+i)==*(p2+i))
{
if(*(p1+i++)=='\0') //全部字符相同时返回结果0
{
return 0;
}
}
return (*(p1+i)-(*(p2+i)));//不同时返回结果为第一对不同字符的ASCII码的差值
}
这个函数的缺点是两个字符串长度必须一致。
#include <stdio.h>
#define M 81
int strcmp(char *p1,char *p2) {
int i;
for(i = 0; p1[i] && p2[i]; ++i)
if(p1[i] != p2[i]) return (p1[i] - p2[i]);
if(p2[i]) return p1[i];
else if(p1[i]) return -p2[i];
return 0;
}
int main() {
char s1[M],s2[M];
int T,res;
printf("T = ");
scanf("%d",&T);
while(T--) {
fflush(stdin);
printf("s1 = ");
fgets(s1,M - 1,stdin);
fflush(stdin);
printf("s2 = ");
fgets(s2,M - 1,stdin);
res = strcmp(s1,s2);
printf("s1与s2的比较结果为:%d\n",res);
}
return 0;
}
int strcmp(char *p1,char *p2){
int i;
for(i=0;p1[i]==p2[i] && p1[i]!='\0';i++);
return p1[i]-p2[i];
}