在C语言中,strcmp()是什么函数?
比较字符串的函数,是很基本的函数
原型:extern int strcmp(char *s1,char * s2);
用法:#include string.h
功能:比较字符串s1和s2。
说明:
当s1s2时,返回值0
当s1=s2时,返回值=0
当s1s2时,返回值0
举例:
// strcmp.c
#include syslib.h
#include string.h
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(r0)
printf(“s1 less than s2”);
else
printf(“s1 greater than s2”);
getchar();
return 0;
}
C语言中的strcmp函数有什么作用,它的格式是怎样的?
一.strcmp函数
strcmp函数是比较两个字符串的大小,返回比较的结果。一般形式是:
i=strcmp(字符串,字符串);
其中,字符串1、字符串2均可为字符串常量或变量;i 是用于存放比较结果的整型变量。比较结果是这样规定的:
①字符串1小于字符串2,strcmp函数返回一个负值;
②字符串1等于字符串2,strcmp函数返回零;
③字符串1大于字符串2,strcmp函数返回一个正值;
二,strcpy函数
strcpy函数用于实现两个字符串的拷贝。一般形式是:
strcpy(字符中1,字符串2)
c语言strcmp函数?
strcmp是字符串比较函数,调用形式为strcmp(字符串1,字符串2);
功能:字符串1与字符串2比较,如果字符串1==字符串2,则函数值为0,1大于2,则为正整数,1小于2,则为负整数;
从两个字符串的第一个字符开始逐个进行比较(按照ascii码
的大小进行比较),之道出现不同的字符或遇到“\0”为止。例如:char*str1=hello,*str2=void;则strcmp(str1,str2)0;因为‘h’’v’;
c语言中的strcmp函数
c风格字符串是以’\0’为结束标志的。如果你的name[10]没有初始化,用scanf得到前3个字符为abc,后面的是随机的,当你使用strcmp(name,
“abc”)的时候,有可能你的name低第四个字符正好是’\0’,那么此时就是两个相同,否则就是不同。
举个例子
如果你的name的分布是”abc\0defghi”;此时你使用strlen获取他的长度将会是3,这就是c风格字符串以’\0’结束,后面的就不考虑了,使用strcmp也是同样的道理。
解决的办法是你在name定义的时候初始化
两种方法
1、char
name[10]
=
{0};
2、char
name[10];
memset(name,
0,
sizeof(name));
C语言strcmp函数是什么样的代码
C语言中strcmp函数是string库的常用函数。其原型代码和介绍如下:
1.先说一下这个函数的实现原理,向strcmp()函数中传入两个字符串(记为str1,str2).传入之后,通过把str1的各字母的ASCII码值和str2的各字母的ASCII码值进行比较。若str1str2则返回正数,若str1=str2则返回0,否则,则返回负数。
2.下面实现代码:
3.整个函数的原型中得益于“(*str1!=’\0′)(*str1==*str2)”这一句的代码,因为这样当字符指针指向空,意味着字符串已经移动到最后了,比较结束,此时可以退出循环。而如果两个字符串不相等时,则此时函数也可以退出了。
扩展资料:
这个函数要注意一下几点:
①使用*(unsigned char*)str1而不是用*str1。这是因为传入的参数为有符号数,有符号字符值的范围是-128~127,无符号字符值的范围是0~255,而字符串的ASCII没有负值,若不转化为无符号数这回在减法实现时出现错误。
②While循环中ret=*(unsigned char*)str1-*(unsigned char*)str2) *str1,最后与上str1也可以换成str2,因为前面已经做了相减,无论哪个先为‘\0’都会退出。因为最后与上str1是为了判断str1是否结束,即是否为‘\0’。
③这个函数没有判断参数为NULL时的情况,所以当传入NULL时程序会崩溃。网上看别人说商业化代码都会在调用strcmp前先判断是否为NULL,所以可以不用判断NULL;我在VC6上测试string.h中的strcmp(NULL,NULL),程序也会崩溃。这里可以根据实际情况来决定。
参考资料来源:百度百科-strcmp函数
C语言 strcmp
经过
char *s1=”ABCDEF”, *s2=”aB”;
s1++; s2++;
这两条语句后,现在 s1 为”BCDEF”,s2 为”B”。
strcmp() 函数功能如下:
strcmp(s1, s2):若 s1==s2,则返回值为零;若 s1s2,则返回值为某个负数;若 s1s2,则返回值为某个正数。
大致相当于这段代码(来源 glibc):
int
STRCMP (const char *p1, const char *p2)
{
const unsigned char *s1 = (const unsigned char *) p1;
const unsigned char *s2 = (const unsigned char *) p2;
unsigned char c1, c2;
do
{
c1 = (unsigned char) *s1++;
c2 = (unsigned char) *s2++;
if (c1 == ‘\0’)
return c1 – c2;
}
while (c1 == c2);
return c1 – c2;
}
在这个例子中,进入循环,首先比较第零个字符,发现’B’与’B’相等,继续比较第一个字符,’C’和 0(’\0’)不相等,跳出循环,最终输出结果为’C’-0=67。
在某些环境下,strcmp() 函数遇到第一个不相等字符时,若 c1c2 始终输出 1,若 c1c2 始终输出 -1,若 c1==c2 始终输出 0,所以最终输出结果为 1。