用c写入文件,垃圾值被填充

Writing to a file in c, garbage value gets populated

该代码应该将它在 fileReceived 中获得的任何数据附加到 a.txt 文件,但它会填充随机值。(当然也不是那么随机,但绝对不是正确的值)。我错过了什么吗?

File *fp;
fp = fopen("a.txt",+a);
while(1)
{
    fileReceived =...// getting char array of 1024 size
    fwrite(fileReceived,1,sizeof(fileReceived),fp);

    if(padding!=0)
    {
      fclose(fp);
      break;
    }
}

猜测(但不能是其他方式)即使您没有显示正确的部分:

fileReceived =...// getting char array of 1024 size
fwrite(fileReceived,1,sizeof(fileReceived),fp);

fileReceived 必须是 数据指针,因此 sizeof(fileReceived) 不是 1024,而是 4 或 8,具体取决于您的体系结构(因为它不是可以将一个数组分配给另一个数组)

您在循环中写入的数据太少,您的文件获得第一个值而不是最后一个值。既然你知道大小,就这样修正它:

int size = 1024;
...
fwrite(fileReceived,1,size,fp);

如果数据大小不同,您必须从提供指向您的指针的任何函数中获取大小信息,否则您将得到未定义的行为