#include <windows.h>
#include <stdio.h>void main()
{
char strbuf[32768];
char strsou[]=" *I love you* ";
unsigned int lenj=0;
for (int i=0;i<10;i++)
{
    
CopyMemory(strbuf+lenj,strsou,sizeof(strsou));
//memcpy(strbuf+lenj,strsou,sizeof(strsou));
lenj+=sizeof(strsou);

printf("%d%s",i,strbuf);
printf("%d",lenj);
printf("\n");
}

printf("Result:%s",strbuf);}//这个程序的结果是什么呢?
//我希望结果是:strbuf中存放爱10个*I love you* ,but...
//why...
//能告诉我如何做吗?

解决方案 »

  1.   


    #include <windows.h>
    #include <stdio.h>void main()
    {
    char strbuf[32768];
    char strsou[]=" *I love you* ";
    unsigned int lenj=0;
    for (int i=0;i<10;i++)
    {
        
    CopyMemory(strbuf+lenj,strsou,sizeof(strsou));
    //memcpy(strbuf+lenj,strsou,sizeof(strsou));
    lenj+=sizeof(strsou);

    printf("%d%s",i,strbuf);
    printf("%d",lenj);
    printf("\n");
    }

    printf("Result:%s",strbuf);}//这个程序的结果是什么呢?
    //我希望结果是:strbuf中存放爱10个*I love you* ,but...
    //why...
    //能告诉我如何做吗?
      

  2.   

    void main()
    {
    char strbuf[32768];
    char strsou[]=" *I love you* ";
    unsigned int lenj=0;
    for (int i=0;i<10;i++)
    {
        
    CopyMemory(strbuf+lenj,strsou,sizeof(strsou));
    //memcpy(strbuf+lenj,strsou,sizeof(strsou));
    lenj+=sizeof(strsou)-1; //这儿减1就可以了

    printf("%d%s",i,strbuf);
    printf("%d",lenj);
    printf("\n");
    }

    printf("Result:%s",strbuf);
    }
      

  3.   

    其实不需要减1的,-1反而错了,我的程序本来就是正确的。
    之所以显示不出来是因为字符串以0结束,这个0占了一个位置,而printf却认为字符串到0时就结束了,所以打印不出来后面的字符。
     不过我这几天在一直调试的与该问题有关的问题还没得到解决,真让我烦恼,不知道何时能调通我的这个类,唉...