C语言字符串处理函数

函数包含在头文件<string.h>中

函数名举例注释
strcpystrcpy(str , “abcsd123”);将后面的字符串复制给前面的str
strncpychar str[10]=“”; strncpy(str ,“abc123” , 9);拷贝指定长度,不含“\0”,故之前需要预留“\0”
strcmpint i=strcmp(str1,str2);比较字符串大小,比到不相同时结束,比ASCII值
strncmpint i=strncmp(“abc123”,“abc12345”,5);只比较前5位字符
strchrstrchar(str,‘f’);在字符串中从前往后查找字符,找到第一个,后面都打印出来
strrchrstrrchr(str,‘a’);在字符串中从后往前查找字符
strstrstrstr(str,“中国”);在字符串中查找字符串
strcatstrcat(str,“你好中国”);字符串拼接
strtokstrtok(str,“,”);让“,”将str切割开
strleni=strlen(str);求str的字符串长度(不含’\0’),返回值是无符号数
strlwrstrlwr(str);将str字符串变成小写字母
struprstrupr(str);将str字符串变成大写字母

一、常见题型

1.1 sizeof()和strlen()的区别

sizeof()求所占内存空间大小
strlen()求字符串长度(以‘\0’结束但不含‘\0’)
这里有个具体例子讲得很清楚

以下为补充内容

  • strtok();切多次,要在第二次时用strtok(NULL,“, : /”);
    为什么是NULL呢?这里别人写的比较详细

第一次调用这个函数是在while循环体之外,此时,字符串"My name is XiaoMing." 中匹配token(即参数seps代表的各种字符,如本例中," ,/t/n"表示空格,逗号,制表符,换行符这四种字符)中所指定的字符的位置在My和name之间。于是,函数的返回值pointer_a为一个指向”My”的指针。此时,pointer_b指向My和name之间的位置,代表pointer_b之前的位置已经进行过查找匹配了。
这样,在循环体之内进行第二次函数调用的时候,只要把strtok()的第一个参数设置为NULL,就可以直接从pointer_b位置开始进行查找匹配了。
所以,NULL的作用只是为了使得每次调用时,都不是从"My name is XiaoMing."的头开始,而是从上次调用时查找所停止的位置开始,如此循环下去,直到无法再找到匹配token的时候位置,这样就实现了把"My name is XiaoMing."按照token进行分隔的效果。所以,NULL的作用只是为了使得每次调用时,都不是从"My name is XiaoMing."的头开始,而是从上次调用时查找所停止的位置开始,如此循环下去,直到无法再找到匹配token的时候位置,这样就实现了把"My name is XiaoMing."按照token进行分隔的效果。

链接:strtok();第二次使用为何用NULL?

	int i=0;
	p[i]strtok(str,", :  /");  	 //用,:/ 切割字符串,实质是将切割符号变成''
	while(NULL!=p[i])            //从上一次切割处,循环切割
	{
		i++;
		p[i]=strtok(NULL,", : /");
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值