字符串比大小问题

时间:2021-08-14 09:06:35
#include "string.h"
#include "stdio.h"
int fuzhi(char *s1,char *s2)
{int i,j=0;
 for(i=0;s1[i]!='\0'||s2[i]!='\0';i++)
  {
 if(s1[i]>s2[i])
 {
 j=1;
    return j;break;
 }
   else if(s1[i]<s2[i])
   {
   j=-1;
    return j;
break;
   }
  if(s1[i]==s2[i])
  continue;
  }
 if(j==0&&s1[i]=='\0'&&s2[i]=='\0')
 return 0;

}
main()
{char s1[20],s2[20];
 int i,x;
 gets(s1);
 gets(s2);
 x=fuzhi(s1,s2);
 if(x>0)
  {printf("s1>s2\n");
  }
 else if(x<0)
  {printf("s1<s2\n");
  }
 else
  {printf("s1==s2\n");
  }
 puts(s1);
 puts(s2);
 getchar();
}
 
这个代码居然在电脑上调试通过,但我还有一些问题,我用的是VC++6.0
比如说我输入a aa,当读到第一个字符串的'\0'的时候就跳出for循环了啊,直接执行下面的语句了.
但是,我在机子上调试哦的时候,居然得到了正确答案,s1<s2,请问这是怎么回事啊

6 个解决方案

#1


建议你试一下这个函数strcmp()

#2


我知道这个函数,但我们现在不讨论用库函数,所以,麻烦各位看看了/

#3


没听懂得你在说什么

#4


#include "string.h" 
#include "stdio.h" 
int fuzhi(char *s1,char *s2) 
{int i,j=0; 
 for(i=0;s1[i]!='\0'&& s2[i]!='\0';i++) 
  { 
 if(s1[i]>s2[i]) 
 {  
 j=1;     
 return j;
 
 } 
   else if(s1[i] <s2[i]) 
   { 
j=-1; 
    return j; 

   } 
  if(s1[i]==s2[i]) 
  continue; 
 } 
 if(s1[i]=='\0'&& s2[i]!='\0') {
 return -1; 
 }
 else if(s1[i] !='\0'&& s2[i]=='\0') {
 return 1;
 }
 else 
 return 0;


int main() 
{char s1[20],s2[20]; 
 int i,x; 
 gets(s1); 
 gets(s2); 
 x=fuzhi(s1,s2); 
 if(x>0) 
  {printf("s1>s2\n"); 
  } 
 else if(x <0) 
  {printf("s1 <s2\n"); 
  } 
 else 
  {printf("s1==s2\n"); 
  } 
 puts(s1); 
 puts(s2); 
 getchar(); 

#5


字符输入有时就会以空格结束的!这个要注意以下!

#6


s1[0]='a',s1[1]='\0'
s2[0]='a',s2[1]='a',s2[2]='\0'
比较s1[1]<s2[1]

#1


建议你试一下这个函数strcmp()

#2


我知道这个函数,但我们现在不讨论用库函数,所以,麻烦各位看看了/

#3


没听懂得你在说什么

#4


#include "string.h" 
#include "stdio.h" 
int fuzhi(char *s1,char *s2) 
{int i,j=0; 
 for(i=0;s1[i]!='\0'&& s2[i]!='\0';i++) 
  { 
 if(s1[i]>s2[i]) 
 {  
 j=1;     
 return j;
 
 } 
   else if(s1[i] <s2[i]) 
   { 
j=-1; 
    return j; 

   } 
  if(s1[i]==s2[i]) 
  continue; 
 } 
 if(s1[i]=='\0'&& s2[i]!='\0') {
 return -1; 
 }
 else if(s1[i] !='\0'&& s2[i]=='\0') {
 return 1;
 }
 else 
 return 0;


int main() 
{char s1[20],s2[20]; 
 int i,x; 
 gets(s1); 
 gets(s2); 
 x=fuzhi(s1,s2); 
 if(x>0) 
  {printf("s1>s2\n"); 
  } 
 else if(x <0) 
  {printf("s1 <s2\n"); 
  } 
 else 
  {printf("s1==s2\n"); 
  } 
 puts(s1); 
 puts(s2); 
 getchar(); 

#5


字符输入有时就会以空格结束的!这个要注意以下!

#6


s1[0]='a',s1[1]='\0'
s2[0]='a',s2[1]='a',s2[2]='\0'
比较s1[1]<s2[1]