Código c++:
Ver original
int 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'; } inout4.close(); return(1); } int ind; for(int i=0;i<pos4/22;i++){ 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(" "); } 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.