-2

说我有两个字符串

输入 1:“xyz789”
输入 2“mno123”

有没有办法比较它们的值,然后输出 S1 是否大于、等于或小于 S2?

我仅使用标准库手动执行此操作,到目前为止只检查了它们的长度(这是一个安全的假设,即更长的字符串更大,但在比较相似长度时会变得更难。

int compare_string(char *s1, char *s2)
{
   while(*s1==*s2)
   {
      if ( *s1 == '\0' || *s2 == '\0' )
         break;

      s1++;
      s2++;
   }
   if( *s1 == '\0' && *s2 == '\0' )
      return 0;
   else
      return -1;
}
4

1 回答 1

3

您要查找的函数名为strcmp(). 此函数定义为返回三个可能的值,具体取决于第一个字符串是大于、等于还是小于第二个字符串。为了完整起见,这整个段落是该strcmp()函数手册页的链接。请务必阅读。

严格来说,说函数返回三个可能的值并不完全正确。如果字符串不同,该函数将返回负值或正值,但对返回的负值或正值没有限制。换句话说,不能保证只返回-1, 0, 或1.

于 2013-10-10T20:05:55.860 回答