百度
360搜索
搜狗搜索

strcmp和strncmp,C语言怎么比较两个字符串相等详细介绍

本文目录一览: 字符串比较函数strcmp()和strncmp()

int strcmp(const char *s1,const char * s2); 比较s1,s2二个字符串的大小. int strncmp(char *str1, char *str2, int maxlen); 比较s1,s2二个字符串,前maxlen字符的大小。当maxlen为s1,s2中字符串最长长度时,相当于strcmp.

PHP中strcmp()和strcasecmp()函数字符串比较用法分析

本文实例讲述了PHP中strcmp()和strcasecmp()函数字符串比较用法。分享给大家供大家参考,具体如下:
一、PHP中strcmp()函数用于比较两个字符串(区分大小写),其定义如下:
strcmp(string1,string2)
参数说明:
string1
必需。规定要比较的第一个字符串。
string2
必需。规定要比较的第二个字符串。
PS:strcmp()函数与
strncmp()
函数类似,不同的是,strncmp()可以指定每个字符串用于比较的字符数。
二、PHP中strcasecmp()函数比较两个字符串(不区分大小写),其定义如下:
strcasecmp(string1,string2)
参数说明:
string1 必需。规定要比较的第一个字符串。
string2 必需。规定要比较的第二个字符串。
PS:strcasecmp()函数与
strncasecmp()
函数类似,不同的是,strncasecmp()可以指定每个字符串用于比较的字符数。
示例代码:
<!--?php$str1="脚本之家";
$str2="脚本之家";
$str3="www.jb51.net";
$str4="WWW.JB51.NET";
echo
strcmp($str1,$str2);//两个字符串相等
echo
"
";
echo
strcmp($str3,$str4);//注意该函数区分大小写
echo
"
";
echo
strcasecmp($str3,$str4);//该函数不区分大小写
?>
运行结果如下:
0
1
0
补充:关于返回值问题
针对参数string1与string2的比较:
如果两个字符串相等,则返回值为
0
如果
string1
小于
string2,则返回值小于0
如果
string1
大于
string2,则返回值大于0
希望本文所述对大家PHP程序设计有所帮助。

字符串比较函数strcmp()和strncmp()

strcmp()比较以null终止前字符串s1和以null终止的字符串s2的内容,返回一个int类型值,s1大于s2时小于0,s2等于s2为0,s1大于s2时大于0
strncmp()和strcmp相似,只是至多比较以null终止的字符串s1的前n个字符与以null终止的字符串s2的前n个字符。
比较一下:
函数原型:extern int strcmp(const char *s1,const char * s2);
int strncmp(char *str1, char *str2, int maxlen);
可以看出strncmp多一个参数maxlen,区别就在这里,这个表示的是比较字符串的前maxlen长度的字符
两者返回值也不同:
strcmp,当s1
<s2时,返回负数
当s1==s2时,返回0

当s1>s2时,返回正数

strncmp:如果前maxlen字节完全相等,返回值就=0;

如果在前maxlen字节比较过程中,出现str1[n]与str2[n]不等,则返回(str1[n]-str2[n])。
</s2时,返回负数

MATLAB里面strcmp和strncmp的作用

strcmp()接受两个指针参数,意思是把第二个指针所指的字符串,复制到第一个指针所指的数组中,
strncpy ()接受三个参数,前两个是指针参数,数字是复制第二个指针所指的字符串的个数,3就是把第二个复制三个字符到第一个中。
strcmp(S1,S2):寻找S1和S2是否完全匹配,S1和S2没有顺序的区分。
例: s= 'wooden';
strcmp(s,'wood') returns 0
strcmp(s,'wooden') returns 1
strcmp('wooden',s) returns 1
strcnmp(S1,S2,n):寻找S1和S2的前n个字符是否完全匹配,S1和S2没有顺序的区分。
例: s= 'wooden';
strncmp(s,'wood',4) returns 1
strncmp(s,'wood',5) returns 0
strncmp(s,'wooden',4) returns 1
strncmp('wooden',s,4) returns 1
strcmpi(S1,S2)与strncmpi(S1,S2,n)与上面分别对应的strcmp(S1,S2)与strncmp(S1,S2,n)完全相同,唯一的区分是匹配时不区分大小写。

字符串处理函数

(1)字符串长度函数:
int strlen( char *p )
{
int i=0;
while( p[i]!='\0' ){
i++;
}
return i;
}
(2)字符串复制函数:
//将p2所指的内容全部赋给p1
void strcpy( char *p1 , char *p2 )
{
int i=0;
while( p2[i]!='\0'){
p1[i]=p2[i];
i++;
}
p1[i]='\0';
}
(3)字符串比较函数:
int strcmp( char *p1 , char *p2 )
{
int i=0;
while( p1[i]!='\0' && p2[i]!='\0'){
if( p1[i]-p2[i] )
return p1[i]-p2[i];
i++;
}
return strlen(p1)-strlen(p2);
}
(4)最后,提供一个主函数供你测试一下,并附测试用例及预期输出结果 :]
int main()
{
char *p1 , *p2;
p1=new char[1000];
p2=new char[1000];
while( cin>>p1>>p2 ){

cout<
<strlen(p1)<<endl;
cout<
<strlen(p2)<<endl;
cout<
<strcmp(p1,p2)<<endl;

strcpy(p1,p2);

cout<<"after copying p1 becomes "

<
<p1<<endl;
}

return 0;

}

/*

helloWorld

myGirl

10

6

-5

after copying p1 becomes myGirl

abcdef

bcdefg

6

6

-1

after copying p1 becomes bcdefg

abcdefg

abcdefg

7

7

0

after copying p1 becomes abcdefg

abcdefg

abcdefghijkg

7

12

-5

after copying p1 becomes abcdefghijkg

abcdf

abcdd

5

5

2

after copying p1 becomes abcdd

abcdefghij

abcdefg

10

7

3

after copying p1 becomes abcdefg

*/

s代表的是你输入的字符串,N1代表的是从第几个字符开始取,n2是取多少个字符,例如:substr(myname,2,2),结果就是yn

1、字符串长度函数strlen(参数)

  解释:求出字符串中有效字符的个数,参数可以是指针、字符串、数组

  例如:char aa[]="abc";

  char *p=aa;

  strlen(aa)=strlen(p)=strlen("abc")

  2、字符串比较函数strcmp()和strncmp()

  解释:将两个字符串逐个进行比较,当遇到两个字符不同时便停止比较,用前面字符串中的字符与后面字符串中对应的字符进行相减,得到一个大于或小于0的字符,若返回值

  为0,则字符串相等。strncmp()只比交前n个字符

  格式:strcmp(char *p1,char *p2) strncmp(char *p1,char

*p2,n)

  p1 p2可以是指针 也可以是字符数组

  3、检索字符串函数index()或rindex

  解释:该函数的功能是检索在指定的字符串中第一次出现指定字符的位置,该函数返回一个指针,该指针给出指定字符在字符串中的位置,若该字符串中没有该字符则返回NULL 格式:char*index(char *p,char

c) char *rindex(char *p,char c) index 从作向右

rindex 从右向左

  4、字符串连接函数strcat()和 strncat()

  解释:连接两个字符串,将第二个字符串连接到第一个字符串的后面,组成一个新的字符串,并返回一个指针,该指针指向新字符串的首元素

  格式:char *strcat(char s1[],char s2[]), char *strncat(char

s1[],char s2[],n)

  该函数的参数可以是指针 也可以是数组

  5、字符串复制函数strcpy()和strncpy()

  解释:将后面的字符串复制到前面的字符串中,后面字符串保持不变,前面的字符串被覆盖掉,并返回一个指针

  格式:char * strcpy(char s1[],char s2[])

char*strncpy(char s1[],char s2[],n);

  参数可以是字符数组或者指针
</p1<<endl;
</strcmp(p1,p2)<<endl;
</strlen(p2)<<endl;
</strlen(p1)<<endl;

阅读更多 >>>  concatenate英语怎么读,concatenate怎么读

strcmp(a,b),比较时是否要求两个字符串的长度相等??

strcmp 与 strncmp 两个都是比较函数,但是都不需要规定两个字符串的长度。
strcmp 函数的使用时取字符串a , b然后依次从第一个字符开始比较,直到出现不同,然后在判断是否其大小。你可以看下下面的程序:
#include

#include

#define MAX 100int main(){ char str1[MAX]; char str2[MAX] = "123456789"; printf("please enter a string:"); scanf("%99[^\n]", str1); printf("str1 : %s\n", str1); printf("str2 : %s\n", str2); printf("%d\n", strcmp(str1, str2)); //相同返回0,如果str1比str2大则返回1,反之返回-1,比较是按照ASCII来的 return 0;}

strncmp( )函数返回值是什么

strncmp()函数返回值:如果返回值<0,则表示str1小于str2。如果返回值>0,则表示str2小于str1。如果返回值=0,则表示str1等于str2。
字符串大小的比较是以ASCII码表上的顺序来决定,此顺序亦为字符的值。其函数声明为intstrncmp(constchar*str1,constchar*str2,size_tn)。
功能是把str1和str2进行比较,最多比较前n个字节,若str1与str2的前n个字符相同,则返回0。
扩展资料:
strncmp函数的功能比较:
(1)strncmp函数
用来比较s1和s2字符串的前n个字符。如果两个字符串相等的话,strncmp将返回0。如果s1是s2的一个子串的话,s1小于s2。
(2)strcmp函数
同样用于比较两个字符串,设这两个字符串为str1,str2。若str1==str2,则返回零;若str1>str2,则返回正数;若str1
<str2,则返回负数。
参考资料来源:百度百科—strncm
</str2,则返回负数。

C++中如何判断两个字符串是否相等?

strcmp的头文件为#include

如果用到string类,则头文件为#include

#include

老版本是

strcmp函数,string comparison。接受两个参数。用前者去减后者。如果为0就是相等。如果负数,前者在ASCLL表的代码比后者小。在后者前面。

strcmp("ab","ad");

有些系统为-1有些系统为-2.

strncmp接受3个参数。

strncmp("abc","abcdefg",3);

判断前三个。第三个参数指定比较的位数。

而且还可以利用判断和指针判断除某些字符外的指定位置。

#include

using namespace std;

int main()

{

char a[16],b[16];

cout<<"请输入您的密码"<
<endl;
do

{

cin>>a;

cout<<"请再次输入您的密码"<
<endl;
cin>>b;

if (strcmp(a,b)==0)

{

cout<<"恭喜您!登陆成功"<
<endl;
break;

}

else

cout<<"您两次输入的密码不一致,请重新输入"<
<endl;
}while(a!=b);

return 0;

}

string(a)==string(b) 或

#include

strcmp(a,b) == 0表示相等

C语言中比较两个字符串是否相等的方法是使用strcmp函数。

它的形式是:strcmp(str1, str2) == 0(成立则两个字符串相等),它需要在编译器开头加上#include

头文件。它的作用是接受两个参数,并用前者去减后者。如果为0就是相等。如果负数,前者在ASCLL表的代码比后者小。举例:

#include

#include

int main()

{

char str1[] = "123456";

char str2[] = "123456";

if (strcmp(str1, str2) == 0) //这一步开始比较两个字符串是否相等。

printf("这两个字符串相等.");

else printf("这两个字符串不相等");

return 0;

}

输出结果为:

扩展资料:一、函数的实现原理:向strcmp()函数中传入两个字符串(记为str1,str2).传入之后,通过把str1的各字母的ASCII码值和str2的各字母的ASCII码值进行比较。若str1>str2则返回正数,若str1=str2则返回0,否则,则返回负数。

二、函数使用规则:

当s1

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

"A"<"B" "a">"A" "computer">"compare"

特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。ANSI标准规定,返回值为正数,负数,0 。而确切数值是依赖不同的C实现的。

参考资料:strcmp函数-百度百科

</endl;
</endl;
</endl;
</endl;

C++中如何比较两个字符变量的大小

这两个看似一样的东西,其实是指向不同的地址,所以他们比较的时候在比较的是指针所指向的地址,当然会不同。
而且你写错了:
const char* x;
x = "3.1415926";
string y = "3.1415926";
if(x.c_str()==y)
return 1;
这个x是const char*类型,怎么可能能.c_str()呢。。。应该是if(x==y.c_str())吧。
正确的比较方法:
const char* x;
x = "3.1415926";
string y = "3.1415926";
if(*x==*y.c_str())
return 1;
使用*把他们都从指针变回非指针类型即可。
字符的大小,可以直接用< > ==等逻辑运算符。
比如 char a = '1';
char b = '2';
if(b>a)cout<<"b>a"<
<endl;
else cout<<"a>=b"<
<endl;
string类直接用比较运算符 <,>,=

C++提供的字符串处理函数在string.h的头文件中声明。

字符串比较函数strcmp( )

函数原型:int strcmp(const char *s1, const char *s2);

int strncmp(const char *s1, const char *s2, int n);

功能:以字典顺序方式比较两个字符串是否相等。如果两个串相等,函数返回值为0;如果s1串大于s2串,返回值大于0;如果s1串小于s2串,返回值小于0。函数strcmp用于对两个串的完全比较;函数strncmp用于比较两个串的前n个字符。

【例5- 6】字符串比较。

#include

#include

#include

void main()

{

char s1[] = "Happy New Year";

char s2[] = "Happy New Year";

char s3[] = "Happy Holidays";

cout << "s1 = " << s1 << "\ns2 = "<< s2

<< "\ns3 = "<< s3 << "\n\nstrcmp(s1, s2) ="

<< setw( 2 ) << strcmp( s1, s2 )

<< "\nstrcmp(s1, s3) = "<< setw( 2 )

<< strcmp( s1, s3 ) << "\nstrcmp(s3, s1) ="

<< setw( 2 ) << strcmp( s3, s1 );

cout << "\n\nstrncmp(s1, s3, 6) = "<< setw( 2 )

<< strncmp( s1, s3, 6) << "\nstrncmp(sl, s3, 7) ="

<< setw( 2 ) << strncmp( s1, s3, 7 )

<< "\nstrncmp(s3, s1, 7) ="

<< setw( 2 ) << strncmp( s3, s1, 7 ) << endl;

}

程序运行结果如下:

s1 = Happy New Year

s2 = Happy New Year

s3 = Happy Holidays

strcmp(s1, s2) = 0

strcmp(s1, s3) = 1

strcmp(s3, s1) = -1

strncmp(s1, s3, 6) = 0

strncmp(s1, s3, 7) = 1

strncmp(s3, s1, 7) = -1

自定义版字符串比较

//当str1>str2时,返回正数

//当str1==str2时,返回0

//当str1
<str2时,返回负数
int strcmp(const char *str1,const char *str2)

{

int x;

while(*str1!='\0'||*str2!='\0' )

{

if(*str1==*str2)

{

x=0;

str1++;

str2++;

continue;

}

if(*str1>*str2)

{ x=1;break ;}

if(*str1<*str2)

{ x=-1;break; }

if(*str1=='\0'&&*str2!='\0' )

{

x=-1; break;

}

if(*str1!='\0'&&*str2=='\0' )

{

x=1; break;

}

if(*str1=='\0' ||*str2=='\0' )

{

x=0;continue;

}

}

return x;

}

#include

阅读更多 >>>  字符串截取前两位,截取字符串前几位 用什么函数

void main()

{

char*str1="Happy New Year!";

char*str2="Happy New Year!";

char*str3="Happy Holidays!";

cout<<"str1="<
<str1<<"\nstr2="<<str2<<"\nstr3="<<str3<<endl;
cout<<"strcmp(str1,str2)="<
<strcmp(str1,str2)
<<"\nstrcmp(str1,str3)="<
<strcmp(str1,str3)
<<"\nstrcmp(str3,str1)="<
<strcmp(str3,str1)<<endl;
}
</strcmp(str3,str1)<<endl;
</strcmp(str1,str3)
</strcmp(str1,str2)
</str1<<"\nstr2="<<str2<<"\nstr3="<<str3<<endl;

</str2时,返回负数

</endl;
</endl;

C语言怎么比较两个字符串相等

使用 strcmp strncmp 函数
例如
if (!strcmp(str1, str2))
printf("str1 equals str2\n");
比较字符可以直接使用==比较操作符,如:
char c1='a',c2='b';
if(c1==c2) printf("%c is same as %c.",c1,c2);
else printf("%c is different to %c",c1,c2);
若是字符串,则需要使用字符串函数了,strcmp
char s1[]="abc",s2[]="xyz";
if(strcmp(s1,s2)==0) printf("%s is same as %s.",s1,s2);
也可以忽略大小写来比较,使用函数stricmp 中间的i意思是ignore case sensitive
还可以指定长度比较,strncmp,如:
char s1[]="abc",s2[]="abcdefg";
if(strncmp(s1,s2,3)==0) printf("first 3 characters are same");
若不是从开头位置开始比较,如:
char s1[]="abc",s2[]="xyzabc"
if(strncmp(s1,&s2[3],3)==0) 就是比较s1和s2的第3个字符开始的内容

网站数据信息

"strcmp和strncmp,C语言怎么比较两个字符串相等"浏览人数已经达到19次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:strcmp和strncmp,C语言怎么比较两个字符串相等的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!