串的长度大小比较
#include<stdio.h>
#include<string.h>
#define MAXSIZE 1024
typedef struct
{
char str[MAXSIZE];
int length;
}seqstring;
int compare(seqstring str1,seqstring str2)
{
int i;
for(i=0;i<str1.length&&i<str2.length;i++)
{
if(str1.str[i]>str2.str[i])
return 1;
else if(str1.str[i]<str2.str[i])
return -1;
}
if(str1.length==str2.length)
return 0;
else if(str1.length>str2.length)
return 1;
else
return -1;
}
void showResult(int i)
{
switch(i)
{
case 0:
printf("两字符串大小相等");
break;
case 1:
printf("字符串1大于字符串2");
break;
case -1:
printf("字符串1小于字符串2");
}
}
int main()
{
seqstring str1,str2;
int flag;
printf("请输入字符串1:\n");
gets(str1.str);
printf("请输入字符串2:\n");
gets(str2.str);
flag=compare(str1,str2);
showResult(flag);
return 0;
}
比较结果总是相等,大神看看哪里出了问题。
[解决办法]
成员length从始至终都没有被赋值吧...
[解决办法]
int main()
{
seqstring str1,str2;
int flag;
printf("请输入字符串1:\n");
gets(str1.str);
str1.length = strlen(str1.str);// 增加这行,否则str1中的length没有被初始化
printf("请输入字符串2:\n");
gets(str2.str);
str2.length = strlen(str2.str);// 增加这行,否则str2中的length没有被初始化
flag=compare(str1,str2);
showResult(flag);
return 0;
}
#include<stdio.h>
#include<string.h>
#define MAXSIZE 1024
typedef struct
{
char str[MAXSIZE];
int length;
}seqstring;
int compare(seqstring str1,seqstring str2)
{
int i;
/*
for(i=0;i<str1.length&&i<str2.length;i++)
{
if(str1.str[i]>str2.str[i])
return 1;
else if(str1.str[i]<str2.str[i])
return -1;
}*/ //这里没看懂,和长度大小无关 注释了
if(str1.length==str2.length)
return 0;
else if(str1.length>str2.length)
return 1;
else
return -1;
}
void showResult(int i)
{
switch(i)
{
case 0:
printf("两字符串大小相等");
break;
case 1:
printf("字符串1大于字符串2");
break;
case -1:
printf("字符串1小于字符串2");
}
}
int main()
{
seqstring str1,str2;
int flag;
printf("请输入字符串1:\n");
gets(str1.str);
str1.length = strlen(str1.str); //增加
printf("请输入字符串2:\n");
gets(str2.str);
str2.length = strlen(str2.str); //增加
flag=compare(str1,str2);
showResult(flag);
char a;
scanf(&a);
return 0;
}