我有以下代码:

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无法正常工作

最佳答案

您没有分配读取缓冲区的问题。实际上行

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


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

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


使用后不要忘记释放它。

关于c++ - fwrite,fread-fread问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4734561/

10-13 06:24