该代码应该将它在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);
如果数据大小不同,则必须从提供指向您的指针的任何函数中获取大小信息,否则您将获得未定义的行为