cmp=compare比较的意思,str=string
strcmp就是字符串比较
x1++后指向"b" x2++后也是指向"b"
不过x1是指向“bcdef”,x2是"b"
所以结果是1
strcmp 用于字符串比较。 如果返回值==0 完全匹配, >0部分匹配, -1, 完全不匹配
上面返回值应该是1,只有一个字符b匹配
原型:extern int strcmp(const char *s1,const char * s2);
用法:#include
功能:比较字符串s1和s2。
一般形式:strcmp(字符串1,字符串2)
说明:
当s1
当s1>s2时,返回值>0
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
"A"<"B" "a">"A" "computer">"compare"
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。
一例实现代码:
#include
#include
#undef strcmp
int
strcmp (p1, p2)
const char *p1;
const char *p2;
{
register const unsigned char *s1 = (const unsigned char *) p1;
register const unsigned char *s2 = (const unsigned char *) p2;
unsigned reg_char c1, c2;
do
{
c1 = (unsigned char) *s1++;
c2 = (unsigned char) *s2++;
if (c1 == '\0')
return c1 - c2;
}
while (c1 == c2);
return c1 - c2;
}
libc_hidden_builtin_def (strcmp)
编辑本段
应用举例
举例1:(在VC6.0中运行通过)
#include
#include
void main()
{
char string[20];
char str[3][20];
int i;
for(i=0;i<3;i++)
gets(str[i]);
if(strcmp(str[0],str[1])>0)
strcpy(string,str[0]);
else
strcpy(string,str[1]);
if(strcmp(str[2],string)>0)
strcpy(string,str[2]);
printf("\nThe largest string is %s\n",string);
}
举例2:(TC中运行通过)
// strcmp.c
#include
#include
int main()
{
char *s1="Hello, Programmers!";
char *s2="Hello, programmers!";
int r;
clrscr();
r=strcmp(s1,s2);
if(!r)
printf("s1 and s2 are identical");
else
if(r<0)
printf("s1 less than s2");
else
printf("s1 greater than s2");
getchar();
return 0;
}
百度不只有百度知道,百度是个搜索工具,多多利用吧
直接敲代码运行就知道它的功能了