-
C++:memset ,memcpy 和strcpy 的底子差别!
添加时间:2013-7-12 点击量:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
//memcpy:按字节复制
原型:extern void memcpy(void dest,void src,unsigned int count)
//功能:由src所指内存区域复制count个字节到dest所指的内存区域;
//同strcpy
void memcpy_su(void dest, void src, unsigned int count)
{
assert ((dest!=NULL)&&(src!=NULL));
char bdest = (char)dest;
char bsrc = (char) src;
while(count-->0)
bdest++ = bsrc++;
return dest;
}
//strcpy:复制字符串,碰到’\0’就停止
//原型:extern char strcpy(char dest,char src)
//功能:把src所指由’\0’停止的字符串复制到dest所指的数组中;
//申明:src和dest所指内存区域是不成以重叠的且dest必须有足够的空间来容纳字符串。返回dest指针。
char strcpy_su(char dest,char src)
{
assert((dest!=NULL)&&(src!=NULL));
char address = dest;
while((dest++=src++)!=\0)
continue;
return dest;
}
//memset:设置buffer所指的内存区域的前count个字节,用字符c来庖代
//原型:extern void memset(void buffer,int c,int count);
void memset_su(void buffer, int c, int count)
{
assert ((buffer!=NULL));
char buffer2 = (char)buffer;
while(count-->0)
buffer2++ = c;
return buffer;
}
void main()
{
char str1[100]=abchjhgjghjgjgh;
char str2[50]=efghdfkdjf;
strcpy(str1, str2);
printf(%s\n,str1);
char a[3];
memset(a, a, sizeof(a)-1);
memset(&a[2], \0,1);
printf(%s\n,a);
memcpy(str1, str2, strlen(str2));
printf(%s\n,str1);
}
所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》