Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/09/2008, 18:02
cazadorite
 
Fecha de Ingreso: mayo-2007
Ubicación: Buenos aires
Mensajes: 19
Antigüedad: 17 años
Puntos: 0
busqueda y remplazo en achivos

wenas holas queria saber si hay alguna otra forma de buscar y modificar en archivos para no usar la formulita del fseek.. fseek(arc,(long)(-1)*sizeof(tp),1);
el programita anda pero queria saber como buscan y modifcan datos..
Código:
#include <iostream>
#include <conio.c>

using namespace std;
struct tp
{
  char n[30];
};
void cg(tp *);
void bq(tp *);
void pant(tp *);
int main (int argc, char* argv[])
{
  tp p;
  long ps;


  cg(&p);
  bq(&p);
 pant(&p);

 getch();
  return 0;
}
void cg(tp *p)
{
 FILE *a;
   if((a=fopen("c:\\si.cho","wb"))==NULL)
   cout<<"nu";

   else
    {
      for(int i=0; i<3; i++)
      {
        cin.getline((p->n),30);
        fwrite(p,sizeof(tp),1,a);
      }
    }
    fclose(a);
}
void pant(tp *p)
{
   FILE *ar;

  if((ar=fopen("c:\\si.cho","rb"))==NULL)
  cout<<"nu";

   else
    {
    fread(p,sizeof(tp),1,ar);
      while(!feof(ar))
      {
       cout<<(p->n)<<endl;
      fread(p,sizeof(tp),1,ar);
      }
    }
    fclose(ar);

}
void bq(tp *p)
{
  char c[30];
  cout<<"ingr nm"<<endl;
  cin.getline(c,30);

FILE *arc;

  if((arc=fopen("c:\\si.cho","rb+"))==NULL)
  cout<<"nu";

  fread(p,sizeof(tp),1,arc);
  while(!feof(arc))
  {
	  if(!strcmp(c,p->n))
    { cout<<"se encontro"<<endl;
      cout<<p->n<<endl;
      cout<<"ingrese reemplaz"<<endl;
      cin.getline(p->n,30);
      fseek(arc,(long)(-1)*sizeof(tp),1);//es necesario usar esa formula??
      fwrite(p,sizeof(tp),1,arc);
      fclose(arc);
      break;
  	}
    fread(p,sizeof(tp),1,arc);
  }
	fclose(arc);
}