Que raro, hice un programa de prueba y me anda bien:
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Cliente {
char nombre[20];
char apellido[20];
};
void Clientes(void);
int main(){
Clientes();
return 0;
}
void Clientes(){
FILE *pf;
struct Cliente cli;
int tam_cli= sizeof(cli);
int elegi,op=0;
while(op==0){
printf("1>__Ingresar nuevo cliente\n"); printf("2>__Buscar Cliente\n");
switch(elegi)
{
case 1:
pf
= fopen("Clientes.dat","ab");if(pf==NULL)
{
perror("error al abrir el archivo"); return;
}
do
{
scanf("%s",&cli.
apellido); //printf("Direccion: ");
/*scanf("%s",&cli.direccion);
printf("Cumpleaños: ");
scanf("%s",&cli.fechacumple);
printf("Fecha de compra: ");
scanf("%s",&cli.fechacompra);
printf("Ingrese Articulo vendido\n");
scanf("%s",&cli.com.articulo);
printf("Ingrese el talle\n");
scanf("%s",&cli.com.talle);*/
printf("Desea seguir ingresando Clientes presione 0 sino 1\n"); }
while(op==0);
break;
case 2:
pf
= fopen("Clientes.dat","rb");if(pf==NULL)
{
perror("error al abrir el archivo"); return;
}
int n;
char ap[15];
while((n
=fread(&cli
,tam_cli
,1,pf
))!=0&&stricmp
(cli .
apellido,ap
)!=0); if(n==0)
{
printf("No existe el cliente \n"); }
else
{
printf("Nombre: %s\tApellido: %s\n",cli.
nombre,cli.
apellido); }
break;
case 3:
return;
default:
printf("Error ingrese un numero del 1 al 3\n"); }
}
}