该代码应该将它在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);


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

10-06 06:36