字符串处理函数C语言实现(一)
包含以下函数: //字符串查找将在下篇文章详细说明
size_t lm_strlen(const char *str);
size_t lm_strlen2(const char *str);
char * lm_strcpy(char *dest, const char *src);
char * lm_strncpy(char *dest, const char *src, size_t n);
char * lm_strncpy2(char *dest, const char *src, size_t n);
char * lm_strcat (char *dest, const char *src);
char * lm_strcat2 (char *dest, const char *src);
char * lm_strncat (char *dest, const char *src, size_t n);
char * lm_strncat2 (char *dest, const char *src, size_t n);
int lm_strcmp(const char *s1, const char *s2);
int lm_strncmp(const char *s1, const char *s2, size_t n);
//注:有些函数名字后面有2的表示第二钟方法
size_t lm_strlen(const char *str){
int len;
for(len = 0; '/0' != *str++; )
++len;
return len;
}
size_t lm_strlen2(const char *str){
const char *psz = str;
while(*psz++)
;
return (psz-str-1);
}
/* 从src复制源字符串到dest,包括结束符'/0',如果dest数组容量不够,继续覆盖dest数组后面的内存
*/
char * lm_strcpy(char *dest, const char *src){
//if( (!dest)||(!src) ) return NULL; //通常为了保持高效不加判断
char *save = dest;
while(*dest++ = *src++)
;
return save;
}
char * lm_strncpy(char *dest, const char *src, size_t n){
char *start = dest;
char *end = dest + n;
while ((start < end) && (*start++ = *src++))
;
return (dest);
}
char * lm_strncpy2(char *dest, const char *src, size_t n){
if (n > 0) {
char *d = dest;
const char *s = src;
do {
if ((*d++ = *s++) == 0){
//如果n大于字符串src的长度,dest多余部分清0
while (--n != 0)
*d++ = 0;
break;
}
} while (--n != 0);
}
return dest;
}
char * lm_strcat (char *dest, const char *src){
//if( (!dest ) return NULL;
//if( !src ) return dest;
lm_strcpy (dest + lm_strlen (dest), src);
return dest;
}
char * lm_strcat2 (char *dest, const char *src){
char *save;
//if( (!dest ) return NULL;
//if( !src ) return dest;
for(save = dest; *dest; dest++ )
;
for( ; (*dest = *src); dest++, src++ )
;
return save;
}
char * lm_strncat (char *dest, const char *src, size_t n){
//if( (!dest ) return NULL;
//if( !src ) return dest;
lm_strncpy (dest + lm_strlen (dest), src, n);
return dest;
}
char * lm_strncat2 (char *dest, const char *src, size_t n){
char *save;
//if( (!dest ) return NULL;
//if( !src ) return dest;
for(save = dest; *dest; dest++ )
;
for( ; (n>0)&&(*dest = *src); dest++, src++, n--)
;
return save;
}
int lm_strcmp(const char *s1, const char *s2){
while (*s1 != '/0' && *s1 == *s2) {
s1++;
s2++;
}
return(*s1 - *s2);
}
int lm_strncmp(const char *s1, const char *s2, size_t n){
while (n-- > 0 && *s1 != '/0' && *s1 == *s2){
s1++;
s2++;
}
return(*s1 - *s2);
}
转载于:https://www.cnblogs.com/secbook/archive/2008/10/08/2655459.html
字符串处理函数C语言实现(一)相关推荐
- 一个字符串截取函数c语言
刚开始学习c语言,标准库中总是有很多函数没有,string.h中的字符串处理函数好像不是很多,在做栈的例子用需要用到一个字符串按位置截取的函数,就自己写一个,超简单. char* substring( ...
- c语言字符串atoi函数,C语言实现atoi函数
atoi函数:把字符串转换为数字(int型) int atoi_my(char *str) { int flag = 1; int number = 0; //判断是否为空 if(str == NUL ...
- 自定义字符串查找函数c语言,(C语言自定义函数,/*编写函数实现在字符串pStr中查找子串pSub int subString( char* pStr, char* pSub);...
求高手指点哪里有错!!!!十万火急急!!!!! #include #include int subString( char* pStr, char* pSub); char* sucString( c ...
- 字符串处理函数C语言
1.大写转换为小写字符串: void Upper2Lower(unsigned char *code,unsigned char *code1) { uint16 src_len = 0; uint1 ...
- c语言'字符串截取函数,C语言中的字符串截取函数及应用
/*======================================================== 对于一个五位数a1a2a3a4a5,可将其拆分为三个子数: sub1=a1a2a3 ...
- C语言基础知识(三)-程序设计结构、数组、字符串处理函数
本文是C语言的基础知识,主要讲解三种程序设计结构.数组.字符串和字符数组.数组元素查询以及字符串处理函数. 程序结构设计 包括C语言在内的几乎任何编程语言都支持以下三种程序设计结构,它们分别是: 顺序 ...
- c语言计算字符串的函数是什么,字符函数
字符函数(character function)是处理字符型数据的函数,其自变量或函数值中至少有一个是字符型数据. 中文名 字符函数 外文名 character function 应用领域 计算机等涉 ...
- c语言英文字符转数字,C语言常用数字和字符串转换函数(国外英文资料).doc
C语言常用数字和字符串转换函数(国外英文资料) C语言常用数字和字符串转换函数(国外英文资料) C language commonly used Numbers and string conversi ...
- perm函数c语言_理解C语言(三) 字符串处理函数
1 字符串基础 字符串是一种重要的数据类型,有零个或多个字符组成的有限串行. 定义子串: 串中任意个连续的字符组成的子序列,并规定空串是任意串的子串,任意串也是其自身的子串,如字符串"ade ...
最新文章
- 用法 stl_51Nod 2160 数字游戏 STL基本用法
- 报表 表格间距_从易读性和易操作性两大方面,教你做好表格设计
- python array笔记
- ASP.NET MVC 2
- 将mysql的数据库导入到linux_linux 操作之一 如何在linux将本地数据*.sql文件导入到linux 云服务器上的mysql数据库...
- EventFlow.helper.js 事件流程控制
- 进程间关系和守护进程
- 首层nginx 传递 二级代理,三级代理......多级代理nginx 客户端真实IP的方法
- python中直方图bins是什么意思_Python 中下划线的 5 种含义都是什么?
- 自动化测试元素查找利器firepath介绍
- 成为一名PHP专家其实并不难
- VS2008安装deffactory.dat文件错误解决方法
- Tomcat基础教程(三)
- LeetCode:Anagrams
- js foreach用法_36 个JS 面试题为你助力金九银十(面试必读)
- 集成海康威视Sadp SDK实现重置密码
- MTK 6589暗码切换开机LOGO(不适应NAND 的FLASH)
- 今年很火的 AI 绘画怎么玩
- java毕业生设计在线辅导答疑系统计算机源码+系统+mysql+调试部署+lw
- jmeter设置为中文的两种方法