C语言中memset-memcpy(memmove memccpy)-strcpy函数源代码
来源:互联网 发布:免费优盘数据恢复软件 编辑:程序博客网 时间:2024/04/28 07:40
一、概述
1、memset
原型:extern void *memset(void *buffer, char c, int count);
用法:#include <string.h>
功能:把buffer所指内存区域的前count个字节设置成字符c
说明:返回指向buffer的指针
2、
memcpy
原型:extern void *memcpy(void *dest, void *src, unsigned int count);
用法:#inclue <string.h>
功能:由src所指内存区域复制count个字节到dest所指内存区域
说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针
memccpy
原型:extern void *memccpy(void *dest, void *src, unsigned char ch, unsigned int count);
用法:#include <string.h>
功能:由src所指内存区域复制不多于count个字节到dest所指内存区域,如果遇到字符ch则停止复制
说明:返回指向字符ch后的第一个字符的指针,如果src前count个字节中不存在ch则返回NULL。
memmove
原型:extern void *memmove(void *dest, const void *src, unsigned int count)
用法:#include <string.h>
功能:由src所指内存区域复制count个字节到dest所指向内存区域
说明:src和dest所指内存区域可以重叠,但复制后src内容会被更改。函数返回指向dest的指针
memcmp
原型:extern int memcmp(void *buf1, void *buf2, unsigned int count)
用法:#include <string.h>
功能:比较内存区域buf1和buf2的前count个字节
说明:
当buf1<buf2时,返回值<0
当buf1=buf2时,返回值=0
当buf1>buf2时,返回值>0
3、
strset
原型:extern char *strset(char *s, char c)
用法:#include <string.h>
功能:把字符串s中的所有字符都设置成字符c
说明:返回指向s的指针
strcpy
原型:extern char *strcpy(char *dest, char *src)
用法:#include <string.h>
功能:把src所指由NULL结束的字符串复制到dest所指的数组中。
说明:
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针
strncpy
原型:extern char *strncpy(char *dest, char *src, int n)
用法:#include <string.h>
功能:把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。
说明:
如果src的前n个字节不含NULL字符,则结果不会一NULL字符结束。
如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
strcmp
原型:extern int strcmp(char *s1, char *s2)
用法:#include <string.h>
功能:比较字符串s1和s2
说明:
当s1<s2时,返回<0
当s1=s2时,返回=0
当s1>s2时,返回>0
strncmp
原型:extern int strcmp(char *s1, char *s2, int n)
用法:#include <string.h>
功能:比较字符串s1和s2的前n个字符
说明:
当s1<s2时,返回值<0
当s1=s2时,返回值=0
当s1>s2时,返回值>0
strlen
原型:extern int strlen(char *s)
用法:#include <string.h>
功能:计算字符串s的长度
说明:返回s的长度,不包括结束符NULL
函数源代码:
//stirng.c==================================================
char *strcpy(char *strDes, const char*strSrc)
{
assert((strDes!= NULL) && (strSrc != NULL));
char *address =strDes;
while ((*strDes++ = *strSrc ++) != '\0')
NULL;
return address;
}
char *strchr_(char *str, int c)
{
assert(str != NULL);
while ((*str != (char) c) && (*str != '\0'))
str ++;
if (*str != '\0')
return str;
return NULL;
}
char *strchr(const char *str, int c)
{
assert(str != NULL);
for (; *str != (char) c; ++ str)
if (*str == '\0')
return NULL;
return (char *) str;
}
int strcmp(const char *s, const char *t)
{
assert(s !=NULL && t != NULL);
while (*s && *t && *s == *t)
{
++ s;
++ t;
}
return (*s - *t);
}
char *strcat(char *strDes, const char*strSrc)
{
assert((strDes != NULL) && (strSrc != NULL));
char *address = strDes;
while (*strDes != '\0')
++ strDes;
while ((*strDes ++ = *strSrc ++) != '\0')
NULL;
return address;
}
int strlen(const char *str)
{
assert(str != NULL);
int len = 0;
while (*str ++ != '\0')
++ len;
return len;
}
char *strdup(const char *strSrc)
{
assert(strSrc != NULL);
int len = 0;
while (*strSrc ++ != '\0')
++ len;
char *strDes = (char *) malloc (len + 1);
while ((*strDes ++ = *strSrc ++) != '\0')
NULL;
return strDes;
}
char *strstr(const char *strSrc, const char*str)
{
assert(strSrc != NULL && str != NULL);
const char *s = strSrc;
const char *t = str;
for (; *t != '\0'; ++ strSrc)
{
for (s = strSrc, t = str; *t != '\0' && *s == *t; ++s, ++t)
NULL;
if (*t == '\0')
return (char *) strSrc;
}
return NULL;
}
char *strncpy(char *strDes, const char*strSrc, int count)
{
assert(strDes!= NULL && strSrc != NULL);
char *address =strDes;
while (count -- && *strSrc != '\0')
*strDes ++ = *strSrc ++;
return address;
}
char *strncat(char *strDes, const char*strSrc, int count)
{
assert((strDes != NULL) && (strSrc != NULL));
char *address = strDes;
while (*strDes != '\0')
++ strDes;
while (count -- && *strSrc != '\0' )
*strDes ++ = *strSrc ++;
*strDes = '\0';
return address;
}
int strncmp(const char *s, const char *t,int count)
{
assert((s !=NULL) && (t != NULL));
while (*s && *t && *s == *t && count --)
{
++ s;
++ t;
}
return (*s - *t);
}
char *strpbrk(const char *strSrc, constchar *str)
{
assert((strSrc != NULL) && (str != NULL));
const char *s;
while (*strSrc != '\0')
{
s = str;
while (*s != '\0')
{
if (*strSrc == *s)
return (char *) strSrc;
++ s;
}
++ strSrc;
}
return NULL;
}
int strcspn(const char *strSrc, const char*str)
{
assert((strSrc != NULL) && (str != NULL));
const char *s;
const char *t = strSrc;
while (*t != '\0')
{
s = str;
while (*s != '\0')
{
if (*t == *s)
return t - strSrc;
++ s;
}
++ t;
}
return 0;
}
int strspn(const char *strSrc, const char*str)
{
assert((strSrc != NULL) && (str != NULL));
const char *s;
const char *t = strSrc;
while (*t != '\0')
{
s = str;
while (*s != '\0')
{
if (*t == *s)
break;
++ s;
}
if (*s == '\0')
return t - strSrc;
++ t;
}
return 0;
}
char *strrchr(const char *str, int c)
{
assert(str != NULL);
const char *s = str;
while (*s != '\0')
++ s;
for (-- s; *s != (char) c; -- s)
if (s == str)
return NULL;
return (char *) s;
}
char* strrev(char *str)
{
assert(str != NULL);
char *s = str, *t = str, c;
while (*t != '\0')
++ t;
for (-- t; s < t; ++ s, -- t)
{
c = *s;
*s = *t;
*t = c;
}
return str;
}
char *strnset(char *str, int c, int count)
{
assert(str != NULL);
char *s = str;
for (; *s != '\0' && s - str < count; ++ s)
*s = (char) c;
return str;
}
char *strset(char *str, int c)
{
assert(str != NULL);
char *s = str;
for (; *s != '\0'; ++ s)
*s = (char) c;
return str;
}
char *strtok(char *strToken, const char*str)
{
assert(strToken != NULL && str != NULL);
char *s = strToken;
const char *t = str;
while (*s != '\0')
{
t = str;
while (*t != '\0')
{
if (*s == *t)
{
*(strToken + (s - strToken)) ='\0';
return strToken;
}
++ t;
}
++ s;
}
return NULL;
}
char *strupr(char *str)
{
assert(str != NULL);
char *s = str;
while (*s != '\0')
{
if (*s >= 'a' && *s <= 'z')
*s -= 0x20;
s ++;
}
return str;
}
char *strlwr(char *str)
{
assert(str != NULL);
char *s = str;
while (*s != '\0')
{
if (*s >= 'A' && *s <= 'Z')
*s += 0x20;
s ++;
}
return str;
}
void *memcpy(void *dest, const void *src,int count)
{
assert((dest != NULL) && (src != NULL));
void *address =dest;
while (count --)
{
*(char *) dest = *(char *) src;
dest = (char *) dest + 1;
src = (char *) src + 1;
}
return address;
}
void *memccpy(void *dest, const void *src,int c, unsigned int count)
{
assert((dest !=NULL) && (src != NULL));
while (count --)
{
*(char *) dest = *(char *) src;
if (* (char *) src == (char) c)
return ((char *)dest + 1);
dest = (char *) dest + 1;
src = (char *) src + 1;
}
return NULL;
}
void *memchr(const void *buf, int c, intcount)
{
assert(buf != NULL);
while (count --)
{
if (*(char *) buf == c)
return (void *) buf;
buf = (char *) buf + 1;
}
return NULL;
}
int memcmp(const void *s, const void *t,int count)
{
assert((s !=NULL) && (t != NULL));
while (*(char *) s && *(char *) t && *(char *) s ==*(char *) t && count --)
{
s = (char *) s + 1;
t = (char *) t + 1;
}
return (*(char *) s - *(char *) t);
}
void *memmove(void *dest, const void *src,int count)
{
assert(dest != NULL && src != NULL);
void *address =dest;
while (count --)
{
*(char *) dest = *(char *) src;
dest = (char *) dest + 1;
src = (const char *)src + 1;
}
return address;
}
void *memset(void *str, int c, int count)
{
assert(str != NULL);
void *s = str;
while (count --)
{
*(char *) s = (char) c;
s = (char *) s + 1;
}
return str;
}
- C语言中memset-memcpy(memmove memccpy)-strcpy函数源代码
- memset,memcpy,strcpy,memmove,memccpy
- strcpy、memset、memmove、memcpy和memccpy函数的使用
- memset(),memcpy(),memccpy(),memmove(),bcopy(),strcpy(),strncpy()
- 细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数
- 细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数
- 细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数
- 细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数
- 细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数 .
- 细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数
- 细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数
- 细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数
- 细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数
- 细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数
- C语言memset、memcpy、memmove和strcpy
- 【C/C++学习笔记】memmove()、memcpy()、memccpy()、strcpy()函数整理
- memset(),memmove(),memcpy(),memccpy()
- strcpy、memset、memmove、memcpy和memccpy函数的使用和区别
- ReferenceErroe: setImmediate is not defied
- dede后台文章已删除,分页还在
- MySQL锁定机制简介
- big之DP
- 使用JavaMail SMTP协议发送邮件
- C语言中memset-memcpy(memmove memccpy)-strcpy函数源代码
- iBatis-iBatis配置环境(eclipse+mysql)
- js实现表格变色点击行颜色改变
- 可爱的天秤座
- __FILE__和__FUNCTION__的使用
- ArcGIS影像技术之镶嵌数据集概览
- 人生有五不:不等、不管、不看、不做、不给
- ms sql server缓存清除与内存释放
- Fiddler 教程