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;
}

読み取り時にクラッシュし、2 番目の質問では、整数、浮動小数点数、および 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 によって既に回答されているようです。

構造体の値をファイルに書き込む方法に関する 2 番目の質問については、メンバーごとに書き込む必要があります。

fprintfを確認してください。おそらく、さまざまなデータ型を書き込むために使用できます。

于 2011-01-19T11:27:12.897 に答える