void * memcpy(void * dest,const void *src,size_t count) { char *tmp = (char *) dest, *s = (char *) src; while (count--) *tmp++ = *s++; return dest; } 有点没搞明白: 应该是char *s = (char *)src;? 还有就是返回dest?dest好象没变啊?
/* memcpy ─── 拷贝内存块 */ void* memcpy(void* pvTo, void* pvFrom, size_t size) { void* pbTo = (byte*)pvTo; void* pbFrom = (byte*)pvFrom;//这里指针为什么要转化为byte类型? ASSERT(pvTo != NULL && pvFrom != NULL); //检查输入指针的有效性 ASSERT(pbTo>=pbFrom+size || pbFrom>=pbTo+size);//检查两个指针指向的内存是否重叠 while(size-->0) *pbTo++ == *pbFrom++; return(pvTo); } [ 本帖最后由 culuckyabcd ...
有个程序在memcpy出了问题,但是不知道原因在哪儿。 程序大致描述如下: char str1[1024] = {0}; char str2[128] = {0} ....对str2操作... ....对str1操作... //此时str1的长度只有24,后跟40个空格 //str2长度不足128 memcpy(str1 + 64, str2, strlen(str2)); 发现在把str2赋值给str1后,又跟了一串内存中的值 用strcat(str1, str2),解决问题,不知道原因 [ 本帖最后由 c/unix 于 2009-4-18 22:25 编辑 ]
char *p = (char *)malloc(12); unsigned t; t=time(NULL); memcpy(p, &t, 12); t=1225099360 而p为何会是乱码呢
struct { unsigned short len; unsigned char arr[32768]; } SABIN_data; memcpy(ss,(char)&SABIN_data.arr[0],kk) ; A memcpy( ss, &MNlogd_data.arr[3], kk); B A行编译有警告而B行没有 &SABIN_data.arr[0]本身就是char在多个强制转换也没什么啊 高手指教
char a[3]; char b[5]={'1','2','3','4','5'}; memcpy(a,b,5); 这样结果a[0]='1', a[1]='2', a[2]='3'; 这样真的对吗? 或者只是巧合?
#include