Código c++:
Ver originalint Buscocod(char *Barr1,char *Campo1,int &atras,int Marcafin,int &caso)
{
fstream inout4("MEDIN.FIN");
inout4.seekg(0,ios::end);
int pos4=inout4.tellg();
char **Rmedi,**Rmedi1;
Rmedi= new char *[pos4/22];
Rmedi1= new char *[pos4/22];
for(int i=0;i<pos4/22;i++){
Rmedi[i]=new char[14];
Rmedi1[i]=new char[8];
}
int Stmedi=0;
for(int i=0;i<pos4/22;i++){
inout4.seekg(i*22,ios::beg);
inout4.read(reinterpret_cast<char *>(&Rmedi[i]),sizeof(char)*13); Rmedi[13]='\0';
inout4.seekg(i*22+13,ios::beg);
inout4.read(reinterpret_cast<char *>(&Rmedi1[i]),sizeof(char)*7); Rmedi1[7]='\0';
}
if(strcmp(Barr1
,"0000000000000")==0){ inout4.close();
return(1);
}
int ind;
for(int i=0;i<pos4/22;i++){
if(strcmp(Barr1
,Rmedi
[i
])==0){ Stmedi=1;
ind=i;
break;
}
}
Stmedi=0;
}
int colum=50, guion=1,lon=7, fila=12; char titulo[50];
//char CodBarra[14]; strcpy(CodBarra,Barr1);
char oky;
if(Stmedi==0){
while(oky!='A'){
int Fuer = 1;
Rutina(guion,Campo1,titulo,lon,colum,fila,atras,Marcafin,caso,Fuer);
Fuer=0;
if(atras==1)caso++;
gotoxy(15,20); cprintf("[A]probar?");
if(oky=='a')oky='A';
}else oky='A';
}
gotoxy(colum,fila);cprintf(" ");
gotoxy(15,20); cprintf(" ");
}
if(atoi(Barr1
)!=0&&atoi(Campo1
)!=0&&oky
=='A'){
inout4.seekg(pos4,ios::beg);
inout4.write(Rmedi[ind],sizeof(char)*13);
inout4.seekg(pos4+13,ios::beg);
inout4.write(Rmedi1[ind],sizeof(char)*7);
inout4.seekg(pos4+20,ios::beg);
inout4.write("\r\n",sizeof(char)*2);
}
for(int i=0;i<pos4/22;i++){
delete[] Rmedi[i];
delete[] Rmedi1[i];
}
delete [] Rmedi, Rmedi1;
return(0);
}
En el segundo bucle cuando trata de acceder a Rmedi[i] se genera un error de segmentacion, y no entiendo por que. Las areas de memoria que trato de acceder se reservaron correctamente en lineas anteriores. Estoy usando el compilador DJGPP para dos en windows XP.