0

我有以下代码:

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 不起作用

4

3 回答 3

1

您没有为读取分配缓冲区的问题。事实上线

fread(pedal2[i],5,1,plik)

读到未知的地方。您需要分配内存(在您的情况下,零终止字符串为 5 + 1 个字节)。

pedal2[i] = malloc(5+1);
fread(pedal2[i],5,1,plik)

使用后不要忘记释放它。

于 2011-01-19T11:20:51.413 回答
0

pedal2如果没有先为其分配空间,您将无法阅读。

你需要这样的东西:

for (int i = 0; i < 20; ++i) {
    pedal[i] = malloc(100); //allocate some space
}
于 2011-01-19T11:18:49.737 回答
0

Simone & Dewfy 似乎已经回答了您的第一个问题。

对于关于如何将结构值写入文件的第二个问题,您必须逐个成员编写。

请检查fprintf。您可能可以使用它来编写不同的数据类型。

于 2011-01-19T11:27:12.897 回答