c++中strcmp函数如何使用??
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++中strcmp函数如何使用??相关的知识,希望对你有一定的参考价值。
intstrcmp(char
*src,char
*dst)
函数功能:
比较两个字符串是否相等。
函数解析:
这个函数,在VC的库函数中的定义如下:
int
__cdecl
strcmp
(
const
char
*
src,
const
char
*
dst
)
int
ret
=
0
;
while(
!
(ret
=
*(unsigned
char
*)src
-
*(unsigned
char
*)dst)
&&
*dst)
++src,
++dst;
if
(
ret
<
0
)
ret
=
-1
;
else
if
(
ret
>
0
)
ret
=
1
;
return(
ret
);
我们需要留意的是这个函数的循环部分,
while(
!
(ret
=
*(unsigned
char
*)src
-
*(unsigned
char
*)dst)
&&
*dst)
++src,
++dst;
VC的库函数似乎非常喜欢在while循环的判断条件中做一些处理(strcpy等函数的定义中也可看到这样的循环语句),下面我们来分析一下这样做的妙处。
首先,在第一次进行循环条件的判定之前,不管这个循环条件是否满足,都会执行一次这个处理(用src的值减去dst的值)。这和do~while循环有一定的相似性。
do
ret
=
*(unsigned
char*)src
-
*(unsigned
char*)dst;
src++;
dst++;
while(
(0=ret)
&&
*dst
);
再者,它又比do~while循环多做了一次处理。当循环的最后一次条件判断,不满足循环条件时,do~while直接跳出了,而将处理写在判断条件中,在最后一次判断条件不满足时也会做一次处理。因为将处理内容放在while循环的判断条件中时,是先做处理,再做判断,然后才使变量递增;而do~while循环的顺序是先做处理,再做变量递增,最后做条件判断(循环比前者少做了一次);while循环的顺序是先做判断,再做处理,最后做变量递增。这中间的顺序不同导致的循环次数不同,功能执行语句执行的次数也各不相同。
strcmp
—
二进制安全字符串比较
说明
int
strcmp(
string
$str1
,
string
$str2
)
注意该比较区分大小写。
参数
str1第一个字符串。
str2第二个字符串。
返回值
如果
str1小于
str2,返回负数;如果
str1大于
str2,返回正数;二者相等则返回
0。(相等时返回0)
示例:
<?php
$var1="Hello";
$var2="Hello";
if(strcmp($var1,$var2)==0)
echo'相等';
else
echo'不相等';
?>
strcasecmp
—
二进制安全比较字符串(不区分大小写)
int
strcasecmp(string$str1,string$str2)
str1
第一个字符串。
str2
第二个字符串。
返回值:
如果
str1
小于
str2
返回
<
0;
如果
str1
大于
str2
返回
>
0;如果两者相等,返回
0。
示例
:
<?php
$var1="Hello";
$var2="hello";
if(strcasecmp($var1,$var2)==0)
echo'$var1
is
equal
to
$var2
inacase-insensitive
string
comparison';
? 参考技术A 原型:extern
int
strcmp(const
char
*s1,const
char
*
s2);
用法:#include
<string.h>
功能:比较字符串s1和s2。
一般形式:strcmp(字符串1,字符串2)
说明:
当s1<s2时,返回值<0
当s1=s2时,返回值=0
当s1>s2时,返回值>0
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
"A"<"B"
"a">"A"
"computer">"compare"
特别注意:strcmp(const
char
*s1,const
char
*
s2)这里面只能比较字符串,不能比较数字等其他形式的参数。 参考技术B strcmp函数
有两个参数,一个是数组1,一个是数组2;形式为:strcmp(a[],b[]);
其结果可以是1、0、-1;如果a数组ASC码值大于b数组,则为1;如果a数组ASC码值小于b数组,则为-1;如果a数组ASC码值等于b数组,则为0. 参考技术C 就是对两个字符串从左到右逐个字符相比,按ASCII值大小比较,如果出现不同字符或遇到'\0'为止,如果全部字符相等;则认为相等,如果不相等的,按第一个不相等的字符的比较结果为准,
如strmp(str,str),则函数值为0,如果strmp(stra,strb)因为a的askii小于b的,所以函数值为一个负数。
C语言中:strcmp函数如何使用?
我要比较字符a 与k的大小,想用这个strcmp函数来实现,具体的语句是怎么写呢?
原型:extern int strcmp(const char *s1,const char * s2);用法:#include <string.h>
功能:比较字符串s1和s2。
相关函数:wcscmp
一般形式:strcmp(字符串1,字符串2)
说明:
当s1<s2时,返回值<0
当s1=s2时,返回值=0
当s1>s2时,返回值>0
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
"A"<"B" "a">"A" "computer">"compare"
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。 参考技术A #include <stdio.h>
#include <string.h>
int main()
char ch1[2] = "a";
char ch2[2] = "k";
int result = strcmp(ch1, ch2);
if( result > 0 )
printf("a要大\n");
else if( result < 0 )
printf("k要大\n");
else
printf("相等\n");
return 0;
单个字符的话其实可以直接比较,strcmp是比较字符串的,返回值是他们的差值,如果等于0说明相等。其他可以参考百科或MSDN 参考技术B 函数原型:extern int strcmp(const char *s1,const char *s2);
函数功能:以ascii码值比较两个字符串的大小,当s1<s2时,返回为负数,当s1=s2时,返回值= 0,当s1>s2时,返回正数。
头文件:#include <string.h>
参数说明:两个比较字符串的首地址指针。
注意事项:strcmp(const char *s1,const char * s2)这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。 参考技术C 就是对两个字符串从左到右逐个字符相比,按ASCII值大小比较,如果出现不同字符或遇到'\0'为止,如果全部字符相等;则认为相等,如果不相等的,按第一个不相等的字符的比较结果为准,
如strmp(str,str),则函数值为0,如果strmp(stra,strb)因为a的askii小于b的,所以函数值为一个负数。 参考技术D strcmp简介:
函数原型int strcmp(const char *str1,const char *str2);
其作用为
将str1的各个字母的ASCII码与str2的进行比较。
若str1>str2则返回整数,若str1=str2返回0,否则,返回负数
一般这样调用:
if(strcmp(str1,str2)==0)...
else ...
当然,这是C语言的库函数,它的代码存储在某个库文件中。
在string.h里只是一个声明。
我给你写一下,大概是这样的:
int strcmp(const char *str1,const char *str2)
char *str3=str1,*str4=str2;
while(*str3++!=*str4++&&(*str3||*str4))
if(*--str3<*--str4)
return -1;
if(*str3>*str4) return 1;
str3++;str4++;
return 0;
以上是关于c++中strcmp函数如何使用??的主要内容,如果未能解决你的问题,请参考以下文章
如何在函数中使用 strcmp() 时修复预期的“const char *”但参数的类型为“char **”