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