字符串函数大全及其解析.docx
- 文档编号:11100122
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:12
- 大小:18.29KB
字符串函数大全及其解析.docx
《字符串函数大全及其解析.docx》由会员分享,可在线阅读,更多相关《字符串函数大全及其解析.docx(12页珍藏版)》请在冰点文库上搜索。
字符串函数大全及其解析
函数名:
strcpy(字符串复制函数)
功能:
将一个字符串复制到另一个字符串中
表头文件
#include
定义函数
char*strcpy(char*dest,constchar*src);
函数说明
strcpy()会将参数src字符串拷贝至参数dest所指的地址。
返回值
返回参数dest的字符串起始地址。
附加说明
如果参数dest所指的内存空间不够大,可能会造成缓冲溢出(bufferOverflow)的错误情况,在编写程序时请特别留意,或者用strncpy()来取代。
范例
#include
main()
{
chara[30]="string
(1)";
charb[]="string
(2)";
printf("beforestrcpy():
%s\n",a);
printf("afterstrcpy():
%s\n",strcpy(a,b));
}
执行
beforestrcpy():
string
(1)
afterstrcpy():
string
(2)
函数名:
strncpy(字符串复制函数)
表头文件
#include
定义函数
char*strncpy(char*dest,constchar*src,size_tn);
函数说明
strncpy()会将参数src字符串拷贝前n个字符至参数dest所指的地址。
返回值
返回参数dest的字符串起始地址。
范例
#inclue
main()
{
chara[30]="string
(1)";
charb[]="STRING
(2)";
printf("beforestrncpy():
%s\n",a);
printf("afterstrncpy():
%s\n",strncpy(a,b,6));
}
执行
beforestrncpy():
string
(1)
afterstrncpy():
STRING
(1)
函数名:
strcat(字符串连接函数)
功能:
将一个字符串连接到另一个字符串后面,面前的字符串必须足够大。
表头文件
#include
定义函数
char*strcat(char*dest,constchar*src);
函数说明
strcat()会将参数src字符串拷贝到参数dest所指的字符串尾。
第一个参数dest要有足够的空间来容纳要拷贝的字符串。
返回值
返回参数dest的字符串起始地址
范例
#include
main()
{
chara[30]="string
(1)";
charb[]="string
(2)";
printf("beforestrcat():
%s\n",a);
printf("afterstrcat():
%s\n",strcat(a,b));
}
执行
beforestrcat():
string
(1)
afterstrcat():
string
(1)string
(2)
函数名:
strncat(字符串连接函数)
功能:
将一个字符串前N个字符连接到另一个字符串后面,面前的字符串必须足够大。
表头文件
#inclue
定义函数
char*strncat(char*dest,constchar*src,size_tn);
函数说明
strncat()会将参数src字符串拷贝n个字符到参数dest所指的字符串尾。
第一个参数dest要有足够的空间来容纳要拷贝的字符串。
返回值
返回参数dest的字符串起始地址。
范例
#include
main()
{
chara[30]="string
(1)";
charb[]="string
(2)";
printf("beforestrnact():
%s\n",a);
printf("afterstrncat():
%s\n",strncat(a,b,6));
}
执行
beforestrnact():
string
(1)
afterstrncat():
string
(1)string
函数名:
strchr(查找字符串中第一个出现的指定字符)
功 能:
在一个串中查找给定字符的第一个匹配之处\
表头文件
#include
定义函数
char*strchr(constchar*s,intc);
函数说明
strchr()用来找出参数s字符串中第一个出现的参数c地址,然后将该字符出现的地址返回。
返回值
如果找到指定的字符则返回该字符所在地址,否则返回0。
范例
#include
main()
{
char*s=”0123456789012345678901234567890”;
char*p;
p=strchr(s,'5');
printf("%s\n",p);
}
函数名:
strrchr()
功能:
查找字符串中最后出现的指定字符
表头文件
#include
定义函数
char*strrchr(constchar*s,intc);
函数说明
strrchr()用来找出参数s字符串中最后一个出现的参数c地址,然后将该字符出现的地址返回。
返回值
如果找到指定的字符则返回该字符所在地址,否则返回0。
范例
#include
main()
{
char*s="0123456789012345678901234567890";
char*p;
p=strrchr(s,'5');
printf("%s\n",p);
}
执行
567890
函数名:
strstr
功能:
在一字符串中查找指定的字符串
表头文件
#include
定义函数
char*strstr(constchar*haystack,constchar*needle);
函数说明
strstr()会从字符串haystack中搜寻字符串needle,并将第一次出现的地址返回。
返回值
返回指定字符串第一次出现的地址,否则返回0。
范例
#include
main()
{
char*s="012345678901234567890123456789";
char*p;
p=strstr(s,"901");
printf("%s\n",p);
}
执行
901234567890123456789
函数名:
strpbrk
功能:
查找字符串中第一个出现的指定字符
表头文件
#include
定义函数
char*strpbrk(constchar*s,constchar*accept);
函数说明
strpbrk()用来找出参数s字符串中最先出现存在参数accept字符串中的任意字符。
返回值
如果找到指定的字符则返回该字符所在地址,否则返回0。
范例
#include
main()
{
char*s="0123456789012345678901234567890";
char*p;
p=strpbrk(s,"a1839");/*1会最先在s字符串中找到*/
printf("%s\n",p);
p=strprk(s,"4398");/*3会最先在s字符串中找到*/
printf("%s\n",p);
执行
123456789012345678901234567890
函数名:
strspn
功 能:
返回字符串中连续不含指定字符串内容的字符数
表头文件
#include
定义函数
size_tstrspn(constchar*s,constchar*accept);
函数说明
strspn()从参数s字符串的开头计算连续的字符,而这些字符都完全是accept所指字符串中的字符。
简单的说,若strspn()返回的数值为n,则代表字符串s开头连续有n个字符都是属于字符串accept内的字符。
返回值
返回字符串s开头连续包含字符串accept内的字符数目。
范例
#include
main()
{
char*str="Linuxwasfirstdevelopedfor386/486-basedPCs.";
char*t1="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("%d\n",strspn(str,t1));
}
执行
5/*计算大小写字母。
不包含“”,所以返回Linux的长度。
*/
函数名:
strcspn
功能:
返回字符串中连续不含指定字符串内容的字符数
表头文件
#inclued
定义函数
size_tstrcspn(constchar*s,constchar*reject);
函数说明
strcspn()从参数s字符串的开头计算连续的字符,而这些字符都完全不在参数reject所指的字符串中。
简单地说,若strcspn()返回的数值为n,则代表字符串s开头连续有n个字符都不含字符串reject内的字符。
返回值
返回字符串s开头连续不含字符串reject内的字符数目。
范例
#include
main()
{
char*str="Linuxwasfirstdevelopedfor386/486-basedpcs.";
printf("%d\n",strcspn(str,""));
printf("%d\n",strcspn(str,"/-"));
printf("%d\n",strcspn(str,"1234567890"));
}
执行
5/*只计算到“”的出现,所以返回“Linux”的长度*/
33/*计算到出现“/”或“-”,所以返回到“6”的长度*/
30/*计算到出现数字字符为止,所以返回“3”出现前的长度*/
函数名:
strcmp(字符串比较函数)
功 能:
串比较
表头文件
#include
定义函数
intstrcmp(constchar*s1,constchar*s2);
函数说明
strcmp()用来比较参数s1和s2字符串。
字符串大小的比较是以ASCII码表上的顺序来决定,此顺序亦为字符的值。
strcmp()首先将s1第一个字符值减去s2第一个字符值,若差值为0则再继续比较下个字符,若差值不为0则将差值返回。
例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。
返回值
若参数s1和s2字符串相同则返回0。
s1若大于s2则返回大于0的值。
s1若小于s2则返回小于0的值。
程序例:
#include
#include
intmain(void)
{
char*buf1="aaa",*buf2="bbb",*buf3="ccc";
intptr;
ptr=strcmp(buf2,buf1);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1\n");
else
printf("buffer2islessthanbuffer1\n");
ptr=strcmp(buf2,buf3);
if(ptr>0)
printf("buffer2isgreaterthanbuffer3\n");
else
printf("buffer2islessthanbuffer3\n");
return0;
}
函数名:
strncmp
功 能:
串比较
表头文件
#include
定义函数
intstrcmp(constchar*s1,constchar*s2,size_tn);
函数说明
strncmp()用来比较参数s1和s2字符串,最多比较n个字符。
字符串大小的比较是以ASCII码表上的顺序来决定,此顺序亦为字符的值。
strncmp()首先将s1第一个字符值减去s2第一个字符值,若差值为0则再继续比较下个字符,若差值不为0则将差值返回。
例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。
返回值
若参数s1和s2字符串相同则返回0。
s1若大于s2则返回大于0的值。
s1若小于s2则返回小于0的值。
程序例:
#include
#include
int main(void)
{
char*buf1="aaabbb",*buf2="bbbccc",*buf3="ccc";
intptr;
ptr=strncmp(buf2,buf1,3);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1\n");
else
printf("buffer2islessthanbuffer1\n");
ptr=strncmp(buf2,buf3,3);
if(ptr>0)
printf("buffer2isgreaterthanbuffer3\n");
else
printf("buffer2islessthanbuffer3\n");
return(0);
}
函数名:
strncasecmp(忽略大小写比较字符串)
功 能:
将一个串中的一部分与另一个串比较,不管大小写
表头文件
#include
定义函数
intstrncasecmp(constchar*s1,constchar*s2,size_tn);
函数说明
strncasecmp()用来比较参数s1和s2字符串前n个字符,比较时会自动忽略大小写的差异。
返回值
若参数s1和s2字符串相同则返回0。
s1若大于s2则返回大于0的值,s1若小于s2则返回小于0的值。
范例
#include
main()
{
char*a="aBcDeF";
char*b="AbCdEf";
if(!
strncasecmp(a,b))
printf("%s=%s\n",a,b);
}
执行
aBcDef=AbCdEf
函数名:
strtok
功 能:
查找由在第二个串中指定的分界符分隔开的单词
表头文件
#include
定义函数
char*strtok(char*s,constchar*delim);
函数说明
strtok()用来将字符串分割成一个个片段。
参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为\0字符。
在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。
每次调用成功则返回下一个分割后的字符串指针。
返回值
返回下一个分割后的字符串指针,如果已无法分割则返回NULL。
范例
#include
main()
{
chars[]="ab-cd:
ef;gh:
i-jkl;mnop;qrs-tu:
vwx-y;z";
char*delim="-:
";
char*p;
printf("%s",strtok(s,delim));
while((p=strtok(NULL,delim)))printf("%s",p);
printf("\n");
}
执行
abcdef;ghijkl;mnop;qrstuvwxy;z/*-与:
字符已经被\0字符取代*/
说明:
首次调用时,s必须指向要分解的字符串,随后调用要把s设成NULL。
strtok在s中查找包含在delim中的字符并用NULL('\0')来替换,直到找遍整个字符串。
返回指向下一个标记串。
当没有标记串时则返回空字符NULL。
但是如果是下面的用法,则是错误的:
char*s="zgbfg|zlkjksajflasf";
char*p1=strtok(s,"|");
理由是,s字符串指针指向的是一个常数字符串。
而strtok是需要分割字符,并相应的把传入的s进行裁剪,但是由于s指向的是个常数字符串,所以会导致出错。
如果是下面的用法则不会出错。
chars[256]="zgbfg|zlkjksajflasf";
char*p1=strtok(s,"|");
这是s是个字符串数组,第一句话会将字符串赋值给s。
而s这个时候是个局部的字符串变量,可以被strtok修改。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 字符串 函数 大全 及其 解析