c语言中strcmp函数 如果两个字符串长度不一样时要怎么比较大小啊?

c语言中strcmp函数 如果两个字符串长度不一样时要怎么比较大小啊?,第1张

下次这些问题自己可以检验的,就别问了,多动手!

给出下面的例子;

#include<stdioh>

#include<stringh>

int main()

{char a[5]="look";

 char b[7]="lookly";

 if(strcmp(a,b)>0)

printf("%s>%s\n",a,b);

 else

printf("%s<%s\n",a,b);

 return 0;

}

C语言中用strcmp函数比较字符和字符串是否相等。

strcmp函数功能是比较两个字符串的大小,返回比较的结果。

函数形式:strcmp(str1,str2)

参数说明:str1,str2可以是字符串常量或变量。

结果说明:

①返回值小于0,说明str1小于str2。

②返回值等于0,说明str1与str2相等。

③返回值大于0,s说明str1大于str2。

strcmp(str1,str2)函数是比较两个字符串的函数:

设这两个字符串为str1,str2,

若str1==str2,则返回零;

若str1>str2,则返回正数;

若str1<str2,则返回负数。

例如:

该函数的原型声明:

extern

int

strcmp(const

char

s1,const

char

s2);

那么,strcmp函数的声明规则是什么?它如何比较两个字符串的大小?

规则如下:

当s1<s2时,返回为负数;

当s1=s2时,返回值=

0;

当s1>s2时,返回正数;

即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:

"A"<"B"

"a">"A"

"computer">"compare"

特别注意:strcmp(const

char

s1,const

char

s2)这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。

ANSI标准规定,返回值为正数,负数,0

。而确切数值是依赖不同的C实现的。

所以:

用它比较Follow

me和Computer

design的话,它会只比较F与C这两个字符串的首元素的大小,所以Follow

me

比较大。

#include<stringh>

int strcmp(const char s1,const char s2);

原型:extern int strcmp(const char s1,const char s2);

所在头文件:stringh

功能:比较字符串s1和s2。

一般形式:strcmp(字符串1,字符串2)

说明:

当s1<s2时,返回为负数

当s1=s2时,返回值= 0

当s1>s2时,返回正数

strcmp是字符串比较函数,调用形式为strcmp(字符串1,字符串2);

功能:字符串1与字符串2比较,如果字符串1==字符串2,则函数值为0,1大于2,则为正整数,1小于2,则为负整数;

从两个字符串的第一个字符开始逐个进行比较(按照ascii码

的大小进行比较),之道出现不同的字符或遇到“\0”为止。例如:charstr1=hello,str2=void;则strcmp(str1,str2)<0;因为‘h’<'v';

C语言提供了几个标准库函数,可以比较两个字符串是否相同。以下是用strcmp()函数比较字符串的一个例子:

#include <stdio h>

#include <string h>

void main (void);

void main(void)

{

char str_1 = "abc" ; char str_2 = "abc" ; char str_3 = "ABC" ;

if (strcmp(str_1, str_2) == 0)

printf("str_1 is equal to str_2 \n");

else

printf("str_1 is not equal to str_2 \n");

if (strcmp(str_1, str_3) == 0)

printf("str_1 is equal to str_3.\n");

else

printf("str_1 is not equalto str_3.\n");

}

上例的打印输出如下所示:

str_1 is equal to str_2

str_1 is not equal to str_3.

strcmp()函数有两个参数,即要比较的两个字符串。strcmp()函数对两个字符串进行大小写敏感的(case-sensitiVe)和字典式的(lexicographic)比较,并返回下列值之一:

----------------------------------------------------

返 回 值 意 义

----------------------------------------------------

<0 第一个字符串小于第二个字符串

0 两个字符串相等 ·

>0 第一个字符串大于第二个字符串

----------------------------------------------------

在上例中,当比较str_1(即“abc”)和str_2(即“abc”)时,strcmp()函数的返回值为0。然而,当比较str_1(即"abc")和str_3(即"ABC")时,strcmp()函数返回一个大于0的值,因为按ASCII顺序字符串“ABC”小于“abc”。

strcmp()函数有许多变体,它们的基本功能是相同的,都是比较两个字符串,但其它地方稍有差别。下表列出了C语言提供的与strcmp()函数类似的一些函数:

-----------------------------------------------------------------

函 数 名 作 用

-----------------------------------------------------------------

strcmp() 对两个字符串进行大小写敏感的比较

strcmpi() 对两个字符串进行大小写不敏感的比较

stricmp() 同strcmpi()

strncmp() 对两个字符串的一部分进行大小写敏感的比较

strnicmp() 对两个字符串的一部分进行大小写不敏感的比较

-----------------------------------------------------------------

在前面的例子中,如果用strcmpi()函数代替strcmp()函数,则程序将认为字符串“ABC”等于“abc”。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11671154.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存