memset无法正常工作

pra*_*pta -1 c linux libc memcpy

我有以下一组代码无法找到我获得垃圾值的原因.我的意图是将字节数复制为目标而不管源是否为我的应用程序制作通用副本.但没有得到正确的结果.有没有办法实现这一目标.

int main()
{
    char x[6];
    char *i="pra";
    memset(&x,0,6); //Doing memset

    memcpy(&x,i,6);
    printf("%x %x %x %x %x %x",x[0],x[1],x[2],x[3],x[4],x[5]);
}

o/p:
70 72 61 0 25 78
Run Code Online (Sandbox Code Playgroud)

我们可以看到0之后的输出是垃圾.但是为什么它正在进行以及它的来源.乳清memset不能正常工作.Pleae有助于了解这一概念的原因.

ama*_*loy 6

你抄袭六个字节ix,但只有四个字节非垃圾值的i,所以最后两个是什么碰巧经过i.

  • @pradipta:读取数组的末尾,这是你正在做的,是未定义的行为.这是一个错误,你应该修复它. (2认同)
  • @pradipta:这就是为什么你必须__know__你的源和目的地的大小和适当的代码. (2认同)