C语言字符串处理函数之字符串转换、查询函数

转载自:一壶浊酒浪浪浪

18-07-1214:39

https://baijiahao.baidu.com/s?id=1605595448917218974&wfr=spider&for=pc

介绍完字符串整体操作函数,就该到字符串查询函数和字符串转换函数了,至于一些字符串转换函数,如atoi(),atof(),strtod(),strtol(),tolower(),toupper()等,以后有时间再整理整理。

字符串查询函数

strchr:匹配字符串中首次出现的指定字符

原型:char* strchr(const *s, int c)

功能:用来找出参数s字符串中第一个出现参数c的地址,然后将该字符出现的地址返回

返回值:如果找到指定的字符,则返回该字符所在地址,否则返回0。

说明:数组str中为"abcabc",使用strchr()查找'c'字符首次出现的位置,返回其首次出现的地址,打印输出"cabc";第11行,将查找到地址的值修改为字符'*',原数组打印输出变为"ab*abc"。

strchr()遇到'\0'会停止,例子:

再来做一个简单的拓展,写个小函数,实现功能呢就是把给定字符串中某个字符出现的所有位置都用另外一个字替换,如下例子,将"abcabc"中的'c'替换为'@':

memchr:字符搜索

原型:void* memchr(const void *s, int c, size_t n);

功能:从buf所指内存区域的前n个字节查找字符c

说明:当第一次遇到字符c时停止查找。如果成功,返回指向字符c的指针;否则返回NULL

注意:与strchr不同,它不会遇到'\0'而结束

strstr:字符串匹配,在一个字符串中查找指定的字符串

原型:char* strstr(const char *haystack, const char *needle)

功能:strstr()会从字符串 haystack中搜寻字符串needle,并将第一次出现的地址

返回返回值:返回指定字符串第一次出现的地址,否则返回0

字符串转换函数

strtok:字符串分割函数

原型:char *strtok(char *s, const char *delim);

功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串

说明:strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串中包含的所有字符。当strtok()在参数s的字符串中发现参数delim中包涵的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的指针,如无从分割则返回NULL。

strset:字符串设定函数,遇到'\0'结束

原型:char *strset(char *s, char c);

功能:把字符串s中的所有字符都设置成字符c

说明:返回指向s的指针

memset:空间设定函数,与strset不同,遇到'\0'不会结束需要给定所要设置的空间大小

原型:void *memset(void *s, int ch, size_t n);

功能:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法

说明:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针

还有一些比较常用的函数,如字符串转换函数,像atoi,atof,atol等,都是比较简单的,有时间了整理一下,既然说到这里,顺便提一句,atof()比较特殊,在使用时需要注意下,不要忘记包含头文件stdlib.h

写代码的时候最好不要忽略警告,有时候忽略警告会有意想不到的效果,如上面例子当中使用atof时,提示:warning C4013: “atof”未定义。需要包含头文件stdlib.h,即使不包含,也有警告但不会报错,只是,若不包含这个头文件,这里则是一个隐式申明,隐式申明默认返回类型是int型,float型数据按照int型处理就出问题了。

发布了24 篇原创文章 · 获赞 46 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/m0_37777700/article/details/89547449