Funcion buscar en archivos

Iniciado por silfer_1908, 2 Septiembre 2019, 04:06 AM

0 Miembros y 1 Visitante están viendo este tema.

silfer_1908

Tengo este codigo y esto trabado en la funcion buscar no se como realizarla alguien me podria explicar?
Código (cpp) [Seleccionar]

#include<iostream>
#include<stdlib.h>
#include<fstream>
#include<string.h>
#include <stdio.h>

using namespace std;

class provedor{

    public:
        char nombre[20];
        char codigo[10];
        void agregar();
        void imprimir();
        void buscar();
        void modificar();
        void eliminar();

};


int main(){
    provedor prov;
    prov.agregar();
    prov.buscar();
}


void provedor::agregar(){
    cout<<"nombre provedor: "<<endl;
    cin.getline(nombre,20);
    fflush(stdin);
    cout<<"codigo de provedor:"<<endl;
    cin.getline(codigo,10);
    fflush(stdin);
    ofstream archivo("Provedores.txt", ios::app);
    archivo<<codigo<<"|"<<nombre<<"|"<<"\n";
    archivo.close();
}

void provedor::buscar(){
    char ref[35], comp[35], prev[35];
    int band=1;
    cout<<"\nEscribe el codigo del proveedor a buscar \n";
    fflush(stdin);
    cin.getline(ref, 35);
    ifstream lee("Provedores.txt",ios::app);
    if(!lee.good()){
        cout<<"\nEl archivo no existe";
    }
    else
        {
            while(!lee.eof() && band==1)
            {
                lee.getline(prev, 35, '|');
                lee.getline(comp, 35, '|');
                if(strcmp(comp, ref)==0)
                {
                cout<<"encontrado"<<endl;
                band=0;
                }
                else
                {
                   lee.getline(comp, 35, '|');
                   lee.getline(comp, 35, '|');
                }
            }
            if(band)
            cout<<"\nNo se encontro el proveedor";
        }
}



K-YreX

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.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;