1函数原型编辑
2功能编辑
3所需头文件编辑
4返回值编辑
5说明编辑
6函数实现编辑
微软中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | void * __cdecl memcpy (
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) */
/*
* copy from lower addresses to higher addresses
*/
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); } |
coreutils中:
1 2 3 4 5 6 7 8 9 10 | void * memcpy ( void *destaddr, void const *srcaddr, size_t len) { char *dest = destaddr; char const *src = srcaddr; while (len-- > 0) { *dest++ = *src++; } return destaddr; } |
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; } |
1 2 3 4 5 6 7 8 9 10 11 12 | // 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; |
1 2 3 4 5 6 7 8 9 10 11 | #include <string.h> int main( { char *s= "Golden Global View" ; char d[20]; memcpy (d,s+14,4); //从第14个字符(V)开始复制,连续复制4个字符(View) //memcpy(d,s+14*sizeof(char),4*sizeof(char));也可 d[4]= '\0' ; printf ( "%s" ,d); getchar (); return 0; } |
1 2 3 4 5 6 7 8 9 10 11 | #include <stdio.h> #include <string.h> int main( void ) { char src[] = "******************************" ; char dest[] = "abcdefghijlkmnopqrstuvwxyz0123as6" ; printf ( "destination before memcpy: %s\n" , dest); memcpy (dest, src, strlen (src)); printf ( "destination after memcpy: %s\n" , dest); return 0; } |
7与strcpy函数的区别编辑