strcmp(str1,str2)
比较两个字符串str1
和str2
。
它返回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中暂时无法使用。