strcmp函数用法:
strcmp() 用来比较字符串(区分大小写),其原型为:int strcmp(const char *s1, const char *s2);s1, s2 为需要比较的两个字符串。
字符串大小的比较是以ASCII 。
码表上的顺序来决定,此顺序亦为字符的值。strcmp()首先将s1 第一个字符值减去s2 第一个字符值,若差值为0 。
则再继续比较下个字符,若差值不为0 则将差值返回。例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。
举例:
#include <string.h>。
main(){
char *a = "aBcDeF";。
char *b = "AbCdEf";。
char *c = "aacdef";。
char *d = "aBcDeF";。
printf("strcmp(a, b) : %d\n", strcmp(a, b));。
printf("strcmp(a, c) : %d\n", strcmp(a, c));。
printf("strcmp(a, d) : %d\n", strcmp(a, d));。
输出结果:
strcmp(a, b) : 32。
strcmp(a, c) :-31。
strcmp(a, d) : 0。
扩展资料:
strcmp使用规则:
一、当两个字符串不相等时,C标准没有规定返回值会是1 或 -1,只规定了正数和负数。有些实现会返回1或-1,但将返回值与1或-1做比较的人,都是不合格的程序。
二、有些会把两个字符的ASCII码之差作为比较结果由函数值返回。但无论如何不能以此条依据作为程序中的流程逻辑。
参考资料来源:百度百科—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));
strcmp是C的库函数,功能是把()中的形参指针指向的字符串比较一下,按对应字符的ASCII码大小确定返回值:前者大于后者时返回1,相等时返回0,前者小于后者时返回-1。strcmp(name,eng[i].name)的意思就是比较name和eng[i].name指向的字符串谁大谁小或相等。
字符串比较函数,两个字符串,从第一个字符开始比,如果相同,继续向下比,如果不同,看这两个字符的ASCII码,如果第一个字符串的比较大,则返回1,否则返回-1;。
C语言对字符进行处理的头文件是string.h。
C语言里面关于字符数组的函数定义的头文件,常用函数有strlen、strcmp、strcpy,strcat等等,更详细的可以到include文件夹里面查看该文件。
下面简单介绍常用函数:
一、strlen
1 功能:
求字符串的长度,它求得方法是从字符串的首地址开始到遇到第一个'\0'停止计数,如果只定义而没有赋初值,这个结果是不定的。
2 原型:
size_t strlen(const char *s);。
二、strcpy
1 功 能:
拷贝一个字符串到另一个。
2 原型:
char *strcpy(char *destin, char *source);。
3 说明:
把source中的字符串复制到destin中,返回destin的指针。
三、strcmp
1 功 能:
比较字符串大小。
2 原型:
int strcmp(char *str1, char *str2);。
3 说明:
依次比较两个字符串的每个字符的ASCII码。
如果出现str1>str2,返回值 1;
如果出现str1<str2,返回值 -1;
如果两串所有值均相等,返回0。
四、strcat
1 功 能:
字符串拼接。
2 原型:
char *strcat(char *destin, char *source);。
3 说明:
将source中的字符串拼接到destin结尾,返回destin的指针。
原文地址:http://www.qianchusai.com/%E5%BA%93%E5%87%BD%E6%95%B0strcmp%E7%9A%84%E5%A4%B4%E6%96%87%E4%BB%B6.html