在比较函数中,for循环不执行,在输出结果中只输出s1<s2
个人找问题,觉得是for循环的判断条件i<s1.len&&i<s2.len出错,但我觉得没有问题。
但怕的就是自己觉得自己是对的,求解答。
#include<stdio.h>
#include<string.h>
#define TRUE 1
#define FALSE 0
#define MAXLEN 9
typedef struct{
char ch[MAXLEN];
int len;
}SString;
//求长度
int Howlong(SString s){
int i;
for(i=0;s.ch[i]!='\0';i++);
return i;
}
//创建s2
int Creat(SString *s){
int i;
char c;
printf("创建s2,请输入字符串:(以'$'结束):");
scanf("%c",&c);
i=0;
while(c!='$'){
scanf("%c",&c);
s->ch[i]=c;
i++;
}
s->ch[i]='\0';
s->len=Howlong(*s);
//printf("%d",s->len);
return TRUE;
}
//比较
void Compare(SString s1,SString s2){
int i;
for(i=0;i<s1.len&&i<s2.len;i++)
if(s1.ch[i]!=s2.ch[i]){
if(s1.ch[i]-s2.ch[i]>0){
printf("s1>s2\n");
return;
}
else if(s1.ch[i]-s2.ch[i]<0){
printf("s1<s2\n");
return;
}
}
if(s1.len-s2.len>0)printf("s1>s2");
else if(s1.len-s2.len<0)printf("s1<s2");
else printf("s1==s2");
return;
}
//展示函数,测试使用
void Show(SString s){
int i;
for(i=0;s.ch[i]!='\0';i++){
putchar(s.ch[i]);
}
printf("\n");
}
int main(){
SString s1={"abcdefg"},s2;
printf("s1=%s的字符串长度为%d\n",s1.ch,Howlong(s1));
Creat(&s2);
Compare(s1,s2);
Show(s1);
}