我有以下代码:
int main()
{
char* pedal[20];
char* pedal2[20];
for (int i = 0; i < 20; i++)
{
pedal[i] = "Pedal";
}
FILE* plik;
plik = fopen("teraz.txt","wb");
for (int i = 0; i < 20; i++)
{
fwrite(pedal[i],strlen(pedal[i]),1,plik);
}
system("pause");
fclose(plik);
plik = fopen("teraz.txt","rb");
for (int i = 0; i < 20; i++)
{
fread(pedal2[i],5,1,plik); //I know for now that every element has 5 bytes
}
for (int i = 0; i < 20; i++)
{
std::cout << pedal2[i] << std::endl;
}
fclose(plik);
system("pause");
return 0;
}它在读取和第二个问题时崩溃了,让我们假设我有像整数,浮点数和char*数组这样的结构,我如何才能轻松地将整个结构写到文件中?具有sizeof结构的正常fwrite不起作用
发布于 2011-01-19 19:20:51
你的问题是你没有为读取分配缓冲区。事实上,行
fread(pedal2[i],5,1,plik)读取未知位置。你需要分配内存(在你的例子中,零终止的字符串是5+1字节)。
pedal2[i] = malloc(5+1);
fread(pedal2[i],5,1,plik)使用后别忘了释放。
发布于 2011-01-19 19:18:50
在没有事先为pedal2分配空间的情况下,您不能读入它。
你需要这样的东西:
for (int i = 0; i < 20; ++i) {
pedal[i] = malloc(100); //allocate some space
}发布于 2011-01-19 19:27:13
你的第一个问题似乎已经由Simone & Dewfy回答了。
对于如何将结构值写入文件的第二个问题,您必须逐个编写成员。
请查看fprintf。您可能会使用它来编写不同的数据类型。
https://stackoverflow.com/questions/4734561
复制相似问题