Tengo este codigo y esto trabado en la funcion buscar no se como realizarla alguien me podria explicar?
#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";
}
}
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.