strcpy() 字符串拷贝
char *strcpy(char *strDest, const char *strSrc)
{
assert((strDest!=NULL) && (strSrc !=NULL));
char *address = strDest;
while( (*strDest++ = * strSrc++) != '\0');
return address ;
}
memcpy 拷贝不重叠的内存块
void *memcpy(void* pvTo, void* pvFrom, size_t size) //byte是java里的变量类型
{
assert(pvTo != NULL && pvFrom != NULL);
byte* pbTo = (byte*)pvTo;
byte* pbFrom = (byte*)pvFrom;
/* 内存块重叠吗?如果重叠,就使用memmove */
assert(pbTo>=pbFrom+size || pbFrom>=pbTo+size);
while(size-->0)
*pbTo++ == *pbFrom++;
return pvTo;
}
memmove 可拷贝重叠的内存块
void* memmove(void *dest, const void *src,size_t n)
{
if (n == 0) return 0;
if (dest == NULL) return 0;
if (src == NULL) return 0;
char *psrc = (char*)src;
char *pdest = (char*)dest;
if((dest <= psrc) || (pdest >= psrc + n)) /*检查是否有重叠问题 */
{
for(int i=0; i < n; i++) /*正向拷贝*/
{
*pdest = *psrc;
psrc++;
pdest++;
}
}
else /*反向拷贝*/
{
psrc += n;
pdest += n;
for(int i=0;i<n;i++)
{
psrc--;
pdest--;
*pdest = *psrc;
}
}
return dest;
}
memset 把buffer所指内存区域的前count个字节设置成字符cvoid * memset(void* buffer, int c, int count)
{
char* pvTo=(char*)buffer;
assert(buffer != NULL);
while(count-->0)
*pvTo++=(char)c;
return buffer;
}
分享到:
相关推荐
在C++编程中,`memset`, `memcpy`, 和 `strcpy` 是三个经常使用的函数,用于处理内存区域的数据操作。它们各自有不同的用途和特点,本文将深入解析它们的区别。 `memset` 函数是用来设置一块内存区域的值。其原型为...
strcpy、memcpy、memmove 和 memset 四个函数都是用于字符串和内存操作的,但是它们之间有一些区别: * strcpy 函数用于字符串拷贝,但是它不知道拷贝的字节数目,它会一直拷贝直到遇到字符串结束符 '\0'。 * ...
memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup stricmp strlen strlwr strncat strncmp strncmpi strncpy strnicmp strpbrk ...
memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup stricmp strlen strlwr strncat strncmp strncmpi strncpy strnicmp strpbrk ...
memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup stricmp strlen strlwr strncat strncmp strncmpi strncpy strnicmp strpbrk ...
memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup stricmp strlen strlwr strncat strncmp strncmpi strncpy strnicmp strpbrk ...
memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup stricmp strlen strlwr strncat strncmp strncmpi strncpy strnicmp strpbrk ...
本文将深入探讨`memset`、`strcpy`、`memcpy`以及`memmove`这四个函数的使用和区别。 首先,`memset`函数用于填充内存。它的原型是`void *memset(void *buffer, char c, int count)`,接受一个内存缓冲区的指针`...
* 常见的字符串函数实现: * strlen * strcpy strncpy * strcmp strncmp * strcat strncat * strstr * * 内存操作: * memset、memcmp、memcpy、memmove * * 字符串和数组转换: * atoi itoa *
strcpy,strncpy,strcat,strncat,strcmp,strncmp,strchr,strnchr,strlen,strnlen,strspn,strpbrk,strtok,strsep,memset,bcopy,memcpy,memmove,memcmp,memscan,strstr,memchr.函数具体实现内容。对理解C语言和C编程有...
这里有四个函数:`memmove`、`memcpy`、`_memccpy`和`strcpy`系列。`memmove`和`memcpy`都是用来复制内存区域的,但`memmove`可以处理源和目标区域重叠的情况,而`memcpy`则不行。`_memccpy`在复制过程中寻找特定...
下面我们将详细探讨`strcpy`和`memcpy`的区别,以及`memmove`和`memset`的功能。 首先,`strcpy`函数是专为字符串复制设计的。它存在于`<string.h>`头文件中,其原型为`char *strcpy(char *dest, const char *src)`...
memcpy()和memmove()用于内存块的复制,memset()填充内存区域。 4. **数学运算**:math.h库提供了各种数学函数,如sqrt()平方根,pow()指数运算,sin()和cos()三角函数,fabs()求绝对值。 5. **输入/输出**:...
4. **字符串和字符处理**:str*系列函数如strcpy, strcat, strcmp, strchr等处理字符串,mem*系列函数如memcpy, memmove, memset处理内存块。 5. **数学函数**:math.h头文件包含了一系列数学函数,如sqrt用于...
除了`memcpy`,还有其他内存操作函数,如`memmove`,它可以在源和目标区域重叠时正确地移动数据,而`memcpy`在这种情况下的行为是未定义的。 这些函数都是C语言标准库`<string.h>`和`<stdio.h>`的一部分,它们在...
- `memcpy`和`memmove`:用于拷贝内存区域,`memcpy`假设源和目标不重叠,`memmove`则考虑可能的重叠。 - `memset`:设置内存块的每个字节为特定值。 - `malloc`和`free`:动态内存分配和释放,`calloc`用于零...
其函数原型为 `char *strcpy(char *dest, char *source)`,其中 dest 是目标字符串,source 是源字符串。strcpy 函数返回目标字符串的指针。 例如: ```c #include #include int main(void) { char string[10];...
7. **内存操作**:memcpy、memset、memmove等函数,用于高效地复制、填充或移动内存块。 8. **控制流**:包括条件判断(if, switch)、循环(for, while)、跳转(break, continue, goto)语句的使用。 9. **指针*...
- **相关函数**: memccpy,memcpy,memmove,strcpy,strncpy - **表头文件**: `#include <string.h>` - **定义函数**: `void bcopy(const void *src, void *dest, int n);` - **函数说明**: - `bcopy()`函数与`...
4. **内存管理**:手册中详细讨论了内存管理相关的函数,包括动态内存分配(malloc、calloc、realloc、free),以及内存拷贝(memcpy、memmove、memset)和比较(memcmp)等。 5. **错误处理与调试**:在编程过程中...