因为c语言中,数组初始化时,如果给定的初始值个数小于数组长度,那么后面的剩余元素将被自动初始化为0,也就是字符串的结束标志'\0'
目前创新互联已为近千家的企业提供了网站建设、域名、虚拟主机、网站运营、企业网站设计、大祥网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
strcmp()函数就是用于查找两个以'\0'结束的字符串中的第一个不相同的字符的ascii值之差,如果将数组长度改为5,那么strcmp函数在前5个字符中找不到结束标志,又因为程序不会对边界进行检查,所以会一直找下去,而此时,早已越界,所以会输出不可预见的结果。
C语言中的标准函数库中的strchr()函数可以实现查找字符串中的某个字符。
C语言strchr()函数:
查找某字符在字符串中首次出现的位置
头文件:#include string.h
strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:
char * strchr (const char *str, int c);
【参数】str 为要查找的字符串,c 为要查找的字符。
strchr() 将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。
注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。
【返回值】如果找到指定的字符则返回该字符所在地址,否则返回 NULL。
返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。
提示:如果希望查找某字符在字符串中最后一次出现的位置,可以使用 strrchr() 函数。
下面是c语言实现字符串查询的函数,查到返回字符串的首址,查询不到返回NULL指针。
#include stdio.h
char *my_strstr(char *src, char *str)
{
if(!src||!str) return NULL;
while(*src)
{
char *p1 = src;
char *p2=str;
while(*p1 *p2*p1 == *p2) p1++,p2++;//注意循环体中间是逗号,是一条语句
if (!*p2) return src;//循环后,p2指针指向的位置为字符串结尾标志,则查询到字符串,返回查询到的字符串首址
src++;
}
return NULL;
}
int main()
{
char aaa[]="hello world";
printf("%s\n", my_strstr(aaa, "world"));
return 0;
}
用strstr这个函数\r\n\r\n包含文件:string.h\r\n函数名: strstr \r\n函数原型:extern char *strstr(char *str1, char *str2);\r\n功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。\r\n返回值:返回该位置的指针,如找不到,返回空指针。\r\n\r\n源代码:\r\n\r\n#include\r\n#include//调用string.h中的strstr函数\r\nvoid main(){\r\n char ch1[255]="abcde";\r\n char ch2[100]="cd";\r\n char* ch;//用于接受返回值\r\n if((ch=strstr(ch1,ch2))==NULL){//说明没有要找的字符串\r\n printf("-1\n");\r\n }else{//说明找到了那个字符串\r\n printf("%d\n",ch-ch1+1);//cde的地址减去abcde的地址+1\r\n } \r\n}