字符串比较操作

时间:2016-04-07 05:12:59

标签: c arrays string string-comparison

我刚开始在c学习字符数组。我只是看10.4中提到的示例c programming by kochan

// Function to determine if two strings are equal
#include <stdio.h>
#include <stdbool.h>
bool equalStrings (const char s1[], const char s2[])
{
  int i=0;
  bool areEqual;
  while ( s1[i] == s2 [i] && s1[i] != '\0' && s2[i] != '\0' )
          ++i;
  if ( s1[i] == '\0' && s2[i] == '\0' )
          areEqual = true;
  else
      areEqual = false;

  return areEqual;
}
int main (void) {
  bool equalStrings (const char s1[], const char s2[]); 
  const char stra[] = "string compare test";
  const char strb[] = "string";
  printf ("%i\n", equalStrings (stra, strb)); 
  printf ("%i\n", equalStrings (stra, stra)); 
  printf ("%i\n", equalStrings (strb, "string"));
  return 0;
}

我对字符串相等本身有几个问题

  1. 在上面的程序中,他们刚开始比较字符串中的两个字符。 这不是说如果两个字符串相等,它们的长度应该相同吗?。如果是的话,为什么他们在比较人物之前没先比较长度?

  2. 字符串是否有任何其他比较操作?当我用Google搜索时,我得到的字符串相似,字符串相同或不相同。对它们的任何解释都会很棒。

2 个答案:

答案 0 :(得分:2)

他们不需要比较长度,因为这些字符串是以空值终止的。因此,如果你到达任一字符串的末尾,并且你已经到达另一个字符串的末尾,那么它们必须是相同的长度。

在C的字符串库中,还有其他比较函数。最常见的是strcmpstrncmp。它们会告诉您字符串或子字符串是否相等,小于或大于彼此(使用基于每个字符的实际整数值的排序)。

答案 1 :(得分:1)

为了知道你对字符串进行迭代的长度。给出这个,有可能弄清楚它们是否比先计算长度更快。