我有以下代码:
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无法正常工作
答案 0 :(得分:1)
您没有为阅读分配缓冲区的问题。实际上是行
fread(pedal2[i],5,1,plik)
读到未知的地方。您需要分配内存(在您的情况下,对于零终止字符串,它是5 + 1个字节)。
pedal2[i] = malloc(5+1);
fread(pedal2[i],5,1,plik)
请勿忘记在使用后将其释放。
答案 1 :(得分:0)
如果没有先为其分配空间,就无法读入pedal2
。
你需要这样的东西:
for (int i = 0; i < 20; ++i) {
pedal[i] = malloc(100); //allocate some space
}
答案 2 :(得分:0)