c - c语言中带有指针的fread和fwrite
问题描述
我正在尝试将结构数组写入二进制文件,但是当我调用函数 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*。您必须关闭很多警告,否则您的编译器会告诉您。
推荐阅读
- java - 进入一个无限循环,试图在 java 中实现 A 星
- python-3.x - 如果是非类型对象如何通过?
- php - 从 Laravel 中的控制器调用时视图未加载
- php - 多个文件上传控件在 CI 中不起作用
- scichart - SciChart - ColumnRenderableSeries3D 列直径
- javascript - 如果我使用 jQuery 或 javascript 在一个搜索栏中输入相同的单词两次,则提醒我一条消息
- php - Link to a specific part of a page
- go - 是否可以打印错误?
- javascript - carousel 插件和 jquery 库不能一起工作
- ios - 访问 RLMResults 计数时崩溃