比较字符可以直接使用==比较操作符,如:
成都创新互联是工信部颁发资质IDC服务器商,为用户提供优质的成都多线服务器托管服务
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个字符开始的内容
C语言中用strcmp函数比较字符和字符串是否相等。
strcmp函数功能是比较两个字符串的大小,返回比较的结果。
函数形式:strcmp(str1,str2)
参数说明:str1,str2可以是字符串常量或变量。
结果说明:
①返回值小于0,说明str1小于str2。
②返回值等于0,说明str1与str2相等。
③返回值大于0,s说明str1大于str2。
用字符比较函数,做个FOR循环判断即可,
字符串比较函数strcmp
格式strcmp(a,b)=0 a=b
strcmp(a,b)0 ab
strcmp(a,b)0 ab
a,b均为字符串!
C语言字符串是一系列字符,也就是char类型排列而成的。一个字符是char类型,一系列字符如何表示?用他们的第一个字符的地址表示,因为字符串在地址上也是连续排列的。并且用\0,在物理上是一个字节的全0位,来表示字符串结束。所以"abcde",空间上是'a'
'b'
'c'
'd'
'e'
'\0'strcmp的参数都是char*,也就是指向字符的指针,原理是从两个指针指向的地址开始对比,直到其中一个\0为止。判断相等与否。实现上是每个字符相减。单纯的==,比较的是字符串手地址是否相等,这样比较,不但比较不了两个字符串相等与否,而且要想相等,还必须两个字符串指向同一个地址。
可以使用库函数strcmp判断:strcmp是C语言比较字符串的库函数,形式为int strcmp(char *a, char *b);该函数会对a和b的每个字符,按照ascii码值比较,如果二者完全相同返回0;如果a的ascii码值先出现较大者,会返回1;否则返回-1。所以,要判断字符串相等,可以使用。
"); else printf("str_1 is not equal to str_2.
"); if (strcmp(str_1, str_3) == 0) printf("str_1 is equal to str_3.
"); else printf("str_1 is not equalto str_3.
");} 上例的打印输出如下所示: str_1 is equal to str_2. str_1 is not equal to str_3. strcmp()函数有两个参数,即要比较的两个字符串。strcmp()函数对两个字符串进行大小写敏感的(case-sensitiVe)和字典式的(lexicographic)比较,并返回下列值之一。
串接子串
“串接”是 Σ* 上的重要二元运算。对于 Σ* 中的两个字符串 s 和 t,它们的串接被定义为在 s 中的字符序列之后跟随着 t 中的字符序列,并被指示为 st。例如,Σ = {a, b, …, z},并且 s = bear 且 t = hug,则 st = bearhug 而 ts = hugbear。
字符串串接是结合性的,但非交换性运算。空串充当单位;对于任何字符串 s,有 εs = sε = s。所以,集合 Σ* 和串接运算形成了幺半群,就是从 Σ 生成的自由幺半群。此外,长度函数定义从 Σ* 到非负整数的幺半群同态。
以上内容参考:百度百科-字符串
#include "stdio.h"
#include "string.h"
main()
{
char str1[100];
char str2[100];
char a;
printf("请输入第一个字符串,该字符串为:\n",str1);
gets(str1);
printf("请输入第二个字符串,该字符串为:\n",str2);
gets(str2);
a=strcmp(str1,str2);
if((a==0))
printf("两个字符串相等!\n");
else
printf("两个字符串不等!\n");
while(1){}
}
//int strcmp(char *str1,char *str2)