【总结】C语言中常见的字符串处理函数
2015-11-18 17:22
459 查看
-------------------------------------------------------------------------------------------
C语言中没有字符串类型,但是为了方便对字符串进行操作,提供了许多字符串处理函数。如:
输入输出字符串,字符串的拷贝,连接,比较等操作函数。值得注意的是:在使用输入输出,即gets、
puts函数时应该引入头文件<stdio.h>。在使用其他操作函数时,引入头文件<string.h>。另外,在使用连
接和拷贝字符串函数时,必须保证目标字符数组剩余空间足够放下新字符串和字符串结束标志'\0'。
-------------------------------------------------------------------------------------------
C语言代码如下:
--------------------------------------------------------------------------------------------
干货小知识:(void *)可以接收任意类型的指针,但要想在次使用,必须进行强制类型转换。
--------------------------------------------------------------------------------------------
C语言中没有字符串类型,但是为了方便对字符串进行操作,提供了许多字符串处理函数。如:
输入输出字符串,字符串的拷贝,连接,比较等操作函数。值得注意的是:在使用输入输出,即gets、
puts函数时应该引入头文件<stdio.h>。在使用其他操作函数时,引入头文件<string.h>。另外,在使用连
接和拷贝字符串函数时,必须保证目标字符数组剩余空间足够放下新字符串和字符串结束标志'\0'。
-------------------------------------------------------------------------------------------
C语言代码如下:
/* **功能:把src中的字符串拷贝到dst中。串结束标志'\0'也一同拷贝。 **src,也可以是一个字符串常量。 */ char* my_strcpy(char *dst, const char *src) { assert(dst); assert(src); char *ret = dst; while (*dst++ = *src++) { ; } return (ret); } /* **功能:把src的字符串连接到dst中字符串的后面,并删去dst后的串标志“\0”。 **本函数返回值是dst的首地址。 */ char* my_strcat(char *dst, const char *src) { assert(dst); assert(src); char *ret = dst; /* **寻找'\0',即dst的最后一位 */ while (*dst) { dst++; } /*执行拷贝*/ while (*dst++ = *src++) { ; } return (ret); } /* **功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。 **字符串1=字符串2,返回值=0; **字符串2〉字符串2,返回值〉0; **字符串1〈字符串2,返回值〈0。 */ int my_strcmp(const char *dst, const char *src) { assert(dst); assert(src); while (*dst == *src) { if (*dst == '\0') { return (0); } dst++; src++; } if ((*dst - *src) > 0) return (1); else return (-1); } /* **功能:测字符串的实际长度(不含字符串结束标志‘\0’)并作为函数返回值。 */ int my_strlen(const char *dst) { assert(dst); int ret = 0; while (*dst++) { ret++; } return (ret); } /* **功能:判断src是否是dst的子串,如果是,则返回第一个相等字符的地址,否则返回NULL。 */ char* my_strstr(char *dst, char *src) { assert(dst); assert(src); char *pdst = dst; char *psrc = src; char *tmp = NULL; if (*src == '\0') return (dst); /* **如果第一个之后的字符不相等, **dst跳到第一次相等的下一个字符的位置。 */ while ((*pdst) && (*psrc)) { tmp = pdst; while((*pdst == *psrc) && (*psrc)) { pdst++; psrc++; } if (*psrc == '\0') { return (tmp); } else { pdst = tmp; psrc = src; pdst++; } } return (NULL); }
--------------------------------------------------------------------------------------------
干货小知识:(void *)可以接收任意类型的指针,但要想在次使用,必须进行强制类型转换。
--------------------------------------------------------------------------------------------
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 数据库链接字符串查询网站
- 如何写好 C main 函数
- 空间两大拓展功能 引爆企业发展需求
- 空间支持多子网站 有效降低建站成本
- 奔月互联免费50m/5g/asp/ftp/可绑米空间
- 三维免费空间提供多款免费ASP空间(1G)
- Flex字符串比较 还有Flex字符串操作
- 空间页面CSS说明
- Ruby中创建字符串的一些技巧小结
- ASP下经常用的字符串等函数参考资料
- 将字符串小写转大写并延时输出的批处理代码
- 将字符串转换成System.Drawing.Color类型的方法
- Lua和C语言的交互详解
- Lua源码中字符串类型的实现
- Lua性能优化技巧(四):关于字符串
- 字符串聚合函数(去除重复值)
- Ruby中的字符串编写示例
- 总结的5个C#字符串操作方法分享
- sqlserver中求字符串中汉字的个数的sql语句