该代码应该将它在 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);
如果数据大小变化,您必须从任何提供指针的函数中获取大小信息,否则您将获得未定义的行为
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句