Foros del Web » Programación para mayores de 30 ;) » C/C++ »

busqueda y remplazo en achivos

Estas en el tema de busqueda y remplazo en achivos en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/09/2008, 18:02
 
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);
}
  #2 (permalink)  
Antiguo 08/09/2008, 22:43
Avatar de Fayca  
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: busqueda y remplazo en achivos

hola, hise un pequeño ejemlo para mostrarte como puedes buscar en un archivo una palabra en c++ y no en c
Código:
#include <iostream>
#include <fstream>

int main(int argc, char *argv[])
{
    std::ifstream fichero;   //Crear una variable ifstream para abrir fichero en modo lectura
    std::string palabra;     //Almasena la palabra a buscar
    std::string palabracomp; //Para hacer la comparacion
    fichero.open(argv[1]);   //Abre el documento que le pases por parametro
    if(!fichero)             //Si no se puede abrir el fichero
    {
        std::cout << "No has introdusido ningun fichero en el que buscar por parametro o no existe el fichero";
        return 0;            //Terminar el programa
    }
    std::cout << "Introduce la palabra a buscar:";
    std::cin >> palabra;    //Introducir palabra a buscar

    do
    {
        fichero >> palabracomp; //Ir almasenando lo que va leyendo en palabracomp
        if(palabracomp == palabra) //Compararlo con la palabra a buscar
        {
            std::cout << "Palabra encontrada\n";
            return 0;      //Acabar programa
        }
    }while(fichero);            //Mientras se pueda seguir
    std::cout << "Palabra no encontrada\n";
}
aqui ahi una referencia sobre fstream http://www.cplusplus.com/reference/iostream/fstream/
no te recomiendo que uses conio, no es estandar y no podrias compilar tu programa en otro sistema claro almenos que eso te importe.

si tienes duda comenta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:41.