易百教程

字符串比较

strcmp(str1,str2)比较两个字符串str1str2

它返回int类型的值,该值小于,等于或大于0,则分别表示str1是小于,等于还是大于str2

char str1[] = "The quick brown fox";
char str2[] = "The quick black fox";
if(strcmp(str1, str2) > 0)
  printf("str1 is greater than str2.\n");

仅当str1中的字符代码大于str2中的字符代码时,strcmp()函数返回正整数时,才会执行printf()语句。
strncmp()函数比较两个字符串中给定数量n的字符。

可以使用strncmp()函数比较两个字符串的前十个字符,以确定哪个字符应该首先出现:

if(strncmp(str1, str2, 10) <= 0)
  printf("\n%s\n%s", str1, str2);
else
  printf("\n%s\n%s", str2, str1);

以下代码仅比较您从键盘输入的两个单词。

这个例子将为scand()函数引入一个更安全的替代方法,用于键盘输入的scanf_s()方法,它在stdio.h中声明:

#define __STDC_WANT_LIB_EXT1__ 1  // Make optional versions of functions available
#include <stdio.h>
#include <string.h>

#define MAX_LENGTH 21   // 最大字符串数组长度
int main(void)
{
  char word1[MAX_LENGTH];    // 存储第一个字词
  char word2[MAX_LENGTH];    // 存储第二个字词

  printf("输入第一个单词(最多 %d 个字符): ", MAX_LENGTH - 1);
  int retval = scanf_s("%s", word1, sizeof(word1)); // 读取第一个字词
  if (EOF == retval)
  {
    printf("读字词时出错.\n");
    return 1;
  }

  printf("输入第二个单词(最多 %d 个字符): ", MAX_LENGTH - 1);
  retval = scanf_s("%s", word2, sizeof(word2));     // 读取第二个字词
  if (EOF == retval)
  {
    printf("读字词时出错.\n");
    return 2;
  }
  // Compare the words
  if (strcmp(word1, word2) == 0)
    printf("你输入了相同的单词");
  else
    printf("%s 先于 %s\n",
    (strcmp(word1, word2) < 0) ? word1 : word2,
      (strcmp(word1, word2) < 0) ? word2 : word1);
  return 0;
}

scanf_s()是VS2005及以后新增的具有更强”安全性”的函数。所以在GCC中暂时无法使用。