十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
函数声明:extern unsigned int strlen(char *s);
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的二七网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
所属函数库:string.h
功能:返回s所指的字符串的长度,其中字符串必须以’\0’结尾
参数:s为字符串的初始地址
使用举例:
代码如下
编译运行结果
说明:
函数strlen比较容易理解,其功能和sizeof很容易混淆。其中sizeof指的是字符串声明后占用的内存长度,它就是一个操作符,不是函数;而strlen则是一个函数,它从第一个字节开始往后数,直到遇见了’\0’,则停止
第一 string头文件中的函数strlen 只可以用来测试字符型数组的长度,其他类型不可以
第二 如果要测试int 修改原函数中的参数,会导致数组长度变长(计算机会一直找下去,直到遇到\0)
第三 如果是字符数组,当里面的字符数少于数组长度时,可以正常输出用strlen,如果等于数组长度,则会出现问题
函数介绍:
(推荐教程:c语言教程)
strlen()函数用于计算字符串的长度,直到空结束字符,但不包括空结束字符。
语法结构:
size_t strlen(const char *str)
参数说明:
str -- 要计算长度的字符串。
返回值:
该函数返回字符串的长度
这样:
#includestdio.h
// 计算字符串长度
int len(char a[])
{
int temp=0,i;
for(i=0;a[i]!='\0';i++)
temp++;
return temp;
}
// 获取子串在源串中首次出现的位置索引
int index(char a[], char b[])
{
int i,j,temp;
for(i=0;ilen(a)-len(b);i++)
{
temp=i;
j=0;
while(j=len(b) a[temp]==b[j])
{
temp++;
j++;
}
if(j==len(b))
return i;
}
return -1;//返回-1则没找到指定的子串,否则找到
}
void main()
{
char a[]="hello";
a[len(a)]=' ';//算法改进,在数组a的末尾新增一个空的元素,这样才能hello中找到hello
printf("%d\n",index(a,"llo"));
}
扩展资料:
注意事项
头文件:#include string.h
strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:
char * strchr (const char *str, int c);
参数:str 为要查找的字符串,c 为要查找的字符。
strchr() 将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。
注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。
返回值:如果找到指定的字符则返回该字符所在地址,否则返回 NULL。
返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。
提示:如果希望查找某字符在字符串中最后一次出现的位置,可以使用 strrchr() 函数。
实例:查找字符5首次出现的位置。
#include stdio.h
#include stdlib.h
#include string.h
int main(){
char *s = "0123456789012345678901234567890";
char *p;
p = strchr(s, '5');
printf("%ld\n", s);
printf("%ld\n", p);
system("pause");
return 0;
}
输出结果:
12016464
12016469
#includestdio.h
#includestdlib.h
#includestring.h
/**
*查找字符串首次出现的位置
*
*charneedle[]="name";
*charhaystack[]="mynameiszhangwoods";
*printf("strpospositionis:%d",strpos(haystack,needle));
*
*@paramhaystack在该字符串中进行查找
*@paramneedle要查找的字符串
*@return返回needle存在于haystack字符串起始的位置-1代表未找到
*/
intstrpos(constchar*haystack,constchar*needle)
{
intn,p=0;
if(*haystack*needle)
{
while(*haystack)
{
for(n=0;*(haystack+n)==*(needle+n);n++)
{
if(!*(needle+n+1))
{
returnp;
}
}
p++;
haystack++;
}
}
return-1;
}
intmain(void)
{
charneedle[]="name";
charhaystack[]="mynameiszhangnamewoods";
printf("data:%d",strpos(haystack,needle));
return0;
}
扩展资料
C语言读取主字符串中指定的字符串
#includestdio.h
#includestring.h
intmain()
{
charstr[100];
sscanf("2737237:348384122","%*[^:]:%[^\n]",str);//使用正则表达式:从:开始读取到最后
printf("%s\n",str);
return0;
}
strcpy是一个C语言的标准库函数,是string copy(字符串复制)的缩写。strcpy函数的作用是把含有'\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*。
扩展资料:
C语言中,strcpy 函数不对数组边界进行检查,因而在使用 strcpy 函数时,应注意以下两点:
一、strcpy函数的缓冲区溢出问题
C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。
二、strcpy函数的安全机制
在编写 strcpy 函数时,首先尽量使目的缓冲区长度足够长,另外要检测目的缓冲区和源缓冲区。如果目的缓冲区或源缓冲区是空,就要在异常处理中结束程序。如果源字符串比目的缓冲区长度不长,也要在异常处理中结束程序,以防止出现溢出情况。
参考资料:百度百科-strcpy