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);



    }

    所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》
    分享到: