常见字符串函数内部实现方法
来源:互联网 发布:林珊珊化妆品淘宝店铺 编辑:程序博客网 时间:2024/05/28 16:27
转:http://blog.csdn.net/hkh5730/article/details/14674183
'\0'是ASCII码为0的字符,即字符串结点符
而'0'是数字字符'0',ASCII码是48
1:memset
void *memset(void *s, int c, size_t count)
将s开始的count字节内存都赋值为c
void *memset(void *s,int c, size_t count)
{
char *xs = s;//声明一个中间变量来操作,且为char *
while(count--)
*xs++ =c;
return s;
}
2:memcpy 内存赋值,复制src开始count字节内存值到dest
void *memcpy(void *dest,constvoid *src, size_t count)
{
char *tmp = dest;
const char *s = src;
while (count--)
*tmp++ = *s++;
return dest;
}
3:strcpy字符串复制,遇结束符停止
char *strcpy(char *dest, const char *src)
{
char *tmp =dest;
while((*dest++ = *src++) != '\0');
return tmp;
}
4:复制指定长度字符串
char *strncpy(char *dest, const char *src, size_tcount)
{
char *tmp =dest;
while(count) {
if((*tmp = *src) != 0)
src++;
tmp++;
count--;
}
return dest;
}
5:字符串连接,src连接到dest最后一个字符
char *strcat(char *dest, const char *src)
{
char *tmp =dest;
while(*dest)
dest++;//遇结束符停止,dest指向结束符
while((*dest++ = *src++) != '\0');
return tmp;
}
6:连接n个字节字符到dest末
char *strncat(char *dest, const char *src, size_tcount)
{
char *tmp =dest;
if (count) {
while(*dest)
dest++;
while((*dest++ = *src++) != 0) {
if(--count == 0) {
*dest = '\0';
break;
}
}
}
return tmp;
}
7:字符串比较,如果有发现不一样字符,则失败。
C1<c2 返回-1;C1>C2 返回1; 完全相同返回0
int strcmp(const char *cs, const char *ct)
{
unsignedchar c1, c2;
while (1) {
c1 =*cs++;
c2 =*ct++;
if (c1!= c2)
return c1 < c2 ? -1 : 1;
if (!c1)
break;
}
return 0;
}
8:求字符串字符个数,除去结束符
size_t strlen(const char *s)
{
const char*sc;
for (sc = s;*sc != '\0'; ++sc);
return sc -s;
}
- 常见字符串函数内部实现方法
- 常见字符串操作函数内部实现(一)
- 常见字符串操作函数内部实现(二)
- 常见字符串函数实现
- 常见字符串函数的实现
- 字符串函数模拟实现之strlen函数的三种常见实现方法
- C语言标准库常见函数的内部实现
- 几个常见字符串函数的实现
- 常见几个字符串函数实现代码
- 字符串中常见函数的实现_legend
- C语言常见字符串函数实现
- C语言常见字符串函数实现
- 常见字符串函数的实现过程
- 几个常见字符串函数的实现
- 字符串内部查找函数
- 字符串内部查找函数
- 字符串内部查找函数
- 一些常用字符串操作函数的内部实现
- Poj 1279 Art Gallery
- iOS开发-选择城市
- Opencv之Mat操作(重要)
- 芒果iOS开发之Swift教程05-Swift字符串和字符
- IMX6(D-CHIP)开发板使用步骤说明
- 常见字符串函数内部实现方法
- 别说世界和你无所谓
- iOS在图片上添加文字或图片
- PHP学习总结(10)——PHP入门篇之自定义网站根目录
- Unable to execute dex: Multiple dex files define Lcom/baidu/android/bbalbs/common/a/a;
- er join 与 outer join 的区别在哪里
- Eclipse中修改SVN用户名和密码方法
- openoffice jodconverter 文档转换pdf过坑记录
- floyed