c - c 中带有指针的 fread 和 fwrite

标签 c pointers

我正在尝试将结构数组写入二进制文件,但是当我调用函数 fwrite 时,不会在文件中保存任何内容。

在结构中它们被正确保存

void Escribir_swap(const char *PCB, const char *Archivo, Pagina **Paginas){
FILE *A, *B;
char exeption[5] = " \n\t,";
char LINE[LONG_MAX_LINE];
int TAM = 0;
int i = 0, j = 0;
for(i = 0; i < MARCOS; i++){
    for(j = 0; j < PAGINAS; j++){
        if(Get_I(TAM, PCB, LINE, exeption, A) !=NULL ){
            strcpy(Paginas[i][j].Instruccion,Get_I(TAM, PCB, LINE, exeption, A));
            strcpy(Paginas[i][j].register1, Get_R(TAM, PCB, LINE, exeption, A, 1));
            strcpy(Paginas[i][j].register2, Get_R(TAM, PCB, LINE, exeption, A, 2));
            TAM++;
            }
        else{
            break;
        }
      }
    }
printf("I\t R1,R2\n");
for(i = 0; i<MARCOS; i++)
{
    for(j = 0; j<PAGINAS; j++)
    {
        printf("%s\t %s,%s\n", Paginas[i][j].Instruccion, Paginas[i][j].register1, Paginas[i][j].register2);
    }
}
if(B = fopen(Archivo, "wb")==NULL)
{

    printf("Error al abrir archivo %s", Archivo);
    perror(Archivo);
}else
{
    for(i = 0; i<MARCOS; i++)
    {
        printf("%d\n",fwrite(Paginas[i], sizeof(Pagina), PAGINAS, B));//here shows segment violation!!!!
    }
}
fflush(B);
fclose(B);

}

最佳答案

fwrite 的第一个参数是 FILE*。您必须关闭很多警告,否则编译器会告诉您。

关于c - c 中带有指针的 fread 和 fwrite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51048161/

相关文章:

c++ - 如何使用智能指针围绕 C 'objects' 实现包装器?

c - 多线程 C 代码在编译器优化下会崩溃,如果没有编译器优化,则可以完美运行,这是预期会发生的情况,还是肯定是一个错误?

c - 协议(protocol)消息反序列化不当

c - 从内存地址中减去?

c - C/C++ 指针寻址的不同方式

c - 如何使用指针初始化结构?

查找 100 到 1000 之间素数的代码不起作用

c - 接受失败并返回 EFAULT

c++ - 按引用传递指针未按预期工作

c++ - 将内存分配给类的指针