Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: silfer_1908 en 2 Septiembre 2019, 04:06 am



Título: Funcion buscar en archivos
Publicado por: silfer_1908 en 2 Septiembre 2019, 04:06 am
Tengo este codigo y esto trabado en la funcion buscar no se como realizarla alguien me podria explicar?
Código
  1. #include<iostream>
  2. #include<stdlib.h>
  3. #include<fstream>
  4. #include<string.h>
  5. #include <stdio.h>
  6.  
  7. using namespace std;
  8.  
  9. class provedor{
  10.  
  11.    public:
  12.        char nombre[20];
  13.        char codigo[10];
  14.        void agregar();
  15.        void imprimir();
  16.        void buscar();
  17.        void modificar();
  18.        void eliminar();
  19.  
  20. };
  21.  
  22.  
  23. int main(){
  24.    provedor prov;
  25.    prov.agregar();
  26.    prov.buscar();
  27. }
  28.  
  29.  
  30. void provedor::agregar(){
  31.    cout<<"nombre provedor: "<<endl;
  32.    cin.getline(nombre,20);
  33.    fflush(stdin);
  34.    cout<<"codigo de provedor:"<<endl;
  35.    cin.getline(codigo,10);
  36.    fflush(stdin);
  37.    ofstream archivo("Provedores.txt", ios::app);
  38.    archivo<<codigo<<"|"<<nombre<<"|"<<"\n";
  39.    archivo.close();
  40. }
  41.  
  42. void provedor::buscar(){
  43.    char ref[35], comp[35], prev[35];
  44.    int band=1;
  45.    cout<<"\nEscribe el codigo del proveedor a buscar \n";
  46.    fflush(stdin);
  47.    cin.getline(ref, 35);
  48.    ifstream lee("Provedores.txt",ios::app);
  49.    if(!lee.good()){
  50.        cout<<"\nEl archivo no existe";
  51.    }
  52.    else
  53.        {
  54.            while(!lee.eof() && band==1)
  55.            {
  56.                lee.getline(prev, 35, '|');
  57.                lee.getline(comp, 35, '|');
  58.                if(strcmp(comp, ref)==0)
  59.                {
  60.                cout<<"encontrado"<<endl;
  61.                band=0;
  62.                }
  63.                else
  64.                {
  65.                   lee.getline(comp, 35, '|');
  66.                   lee.getline(comp, 35, '|');
  67.                }
  68.            }
  69.            if(band)
  70.            cout<<"\nNo se encontro el proveedor";
  71.        }
  72. }
  73.  
  74.  
  75.  


Título: Re: Funcion buscar en archivos
Publicado por: K-YreX en 3 Septiembre 2019, 07:56 am
Por lo que se ve en tu código primero guardas el código del proveedor y después su nombre y la búsqueda la quieres realizar por código. En cambio tal y como lo tienes implementado estás comparando el código a buscar con el nombre de los proveedores por lo que dudo que vayas a obtener alguna coincidencia.
Además las líneas 65 y 66 hacen que te saltes uno de cada dos proveedores.