内存操作函数memcpy,memccpy,memmove,memchr,memcmp,memicmp,memset
来源:互联网 发布:chipgenius软件 编辑:程序博客网 时间:2024/05/06 07:43
参数说明:dest为目的字符串,src为源字符串,count为要拷贝的字节数。
所在库名:#include <string.h>
函数功能:将字符串src中的前n个字节拷贝到dest中。
返回说明:src和dest所指内存区域不能重叠,函数返回void*指针。 //注意memcpy返回的是void*类型
Linux中:
1
2
3
4
5
6
7
8
9
10
void *memcpy(void *dest, const void *src, size_t count)
{
assert(dest != NULL && src != NULL);
char *tmp = dest; const char *s = src;
while (count--)
{
*tmp++ = *s++ ;
}
return dest;
}
例子:
// memcpy.c
#include <stdio.h>
#include <string.h>
int
main()
{
char
*s=
"Golden Global View"
;
char
d[20];
clrscr();
memcpy
(d,s,(
strlen
(s)+1) );
printf
(
"%s"
,d);
getchar
();
return
0;
参数说明:dest为目的字符串,src为源字符串,ch为终止复制的字符(即复制过程中遇到ch就停止复制),count为要拷贝的字节数。
所在库名:#include <string.h>
函数功能:将字符串src中的前n个字节拷贝到dest中,直到遇到字符ch便停止复制。
返回说明:src和dest所指内存区域不能重叠,函数返回void*类型指针
(3)函数原型:extern void *memmove(void *dest, const void *src, unsigned int count)
参数说明:dest为目的字符串,src为源字符串,count为要拷贝的字节数。
所在库名:#include <string.h>
函数功能:将字符串src中的前n个字节拷贝到dest中。
返回说明:dest和src所指内存区域可以重叠,但复制后src内容会被更改。函数返回指向dest的指针。
void * memmove ( void * dst,const void *src,size_t count)
{
void * ret = dst;
#if defined (_M_MRX000) || defined(_M_ALPHA) || defined (_M_PPC)
{
extern void RtlMoveMemory( void *, const void *, size_t count );
RtlMoveMemory( dst, src, count );
}
#else /* defined (_M_MRX000) || defined (_M_ALPHA) || defined (_M_PPC) */
if (dst <= src || (char *)dst >= ((char *)src + count)) {
/*
* Non-Overlapping Buffers
* copy from lower addresses tohigher addresses
*/
while (count--) {
*(char *)dst = *(char*)src;
dst = (char *)dst + 1;
src = (char *)src + 1;
}
}
else {
/*
* Overlapping Buffers
* copy from higher addressesto lower addresses
*/
dst = (char *)dst + count - 1;
src = (char *)src + count - 1;
while (count--) {
*(char *)dst = *(char*)src;
dst = (char *)dst - 1;
src = (char *)src - 1;
}
}
#endif /* defined (_M_MRX000) || defined (_M_ALPHA) || defined (_M_PPC) */
return(ret);
}
(4)原型:extern void *memchr(void *buf, char ch, unsigned count);
用法:#include <string.h>
功能:从buf所指内存区域的前count个字节查找字符ch。
说明:当第一次遇到字符ch时停止查找。如果成功,返回指向字符ch的指针;否则返回NULL。
void * memchr (const void * buf,intchr,size_t cnt)
{
while ( cnt&& (*(unsigned char *)buf != (unsigned char)chr) )
{
buf = (unsigned char *)buf + 1;
cnt--;
}
return(cnt ?(void *)buf : NULL);
}
(5)原型: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
int memcmp (const void * buf1,const void * buf2,size_t count)
{
if (!count)
return(0);
while ( --count && *(char *)buf1 == *(char *)buf2 )
{ buf1= (char *)buf1 + 1;
buf2 = (char *)buf2 + 1;
}
return(*((unsigned char *)buf1) - *((unsigned char *)buf2) );
}
(6)原型:extern int memicmp(void *buf1, void *buf2, unsigned int count);
用法:#include <string.h>
功能:比较内存区域buf1和buf2的前count个字节但不区分字母的大小写。
说明:memicmp同memcmp的唯一区别是memicmp不区分大小写字母。
当buf1<buf2时,返回值<0
当buf1=buf2时,返回值=0
当buf1>buf2时,返回值>0
(7)原型:extern void *memset(void *buffer, int c, int count);
用法:#include <string.h>
功能:把buffer所指内存区域的前count个字节设置成字符c。
说明:返回指向buffer的指针。
void * memset (void *dst,int val,size_tcount)
{
void *start =dst;
#if defined (_M_MRX000) || defined (_M_ALPHA) || defined (_M_PPC)
{
extern void RtlFillMemory( void *, size_t count, char);
RtlFillMemory( dst, count, (char)val );
}
#else /* defined (_M_MRX000) || defined (_M_ALPHA) || defined (_M_PPC) */
while (count--) {
*(char *)dst =(char)val;
dst = (char *)dst + 1;
}
#endif /* defined (_M_MRX000) || defined (_M_ALPHA) || defined (_M_PPC)*/
return(start);
}
- 内存操作函数memcpy,memccpy,memmove,memchr,memcmp,memicmp,memset
- 内存操作函数memcpy,memccpy,memmove,memchr,memcmp,memicmp,memset
- 一些常用的字符串处理函数总结memcpy、memmove、memset、memcmp、memchr等
- memset(),memmove(),memcpy(),memccpy()
- C操作内存函数(memset,memcpy,memcmp)
- 内存操作函数memmove,memcpy,memset
- memset,memcpy,strcpy,memmove,memccpy
- memcpy,memccpy,memmove函数
- memcpy,memccpy,memmove函数
- memcpy,memccpy,memmove函数
- strcpy、memset、memmove、memcpy和memccpy函数的使用
- memset(),memcpy(),memccpy(),memmove(),bcopy(),strcpy(),strncpy()
- 操作内存利器memset,memmove,memcpy
- 内存操作函数memcpy、memmove
- C语言中memset-memcpy(memmove memccpy)-strcpy函数源代码
- strcpy、memset、memmove、memcpy和memccpy函数的使用和区别
- c语言中字符串函数strlen()、strcat()、strcpy()、strcmp()及内存操作函数memset()、memcpy()、memcmp()、memmove()的使用及编码实现
- C++学习小记(memcpy、memmove、memccpy以及memset)
- Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
- Java RMI详解
- 并查集,例题 疏通道路
- [LeetCode] Reverse Nodes in k-Group
- Merge k Sorted Lists -- LeetCode
- 内存操作函数memcpy,memccpy,memmove,memchr,memcmp,memicmp,memset
- kmp算法详解
- Miracast技术详解
- 消息钩子
- Linux系统灾难恢复技术和方法
- OGRE学习笔记之_配置文件_Resources.cfg
- C语言函数形参
- 提高性能 MSSQL百万数据量 值得注意的30条优化技巧
- 高并发Tomcat7.0配置