Ver Mensaje Individual
  #7 (permalink)  
Antiguo 21/03/2013, 13:37
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 4 meses
Puntos: 83
Respuesta: Problema con Busqueda en archivo binario

Eso es que hay algo mal en el condicional de la comparacion que usas en la busqueda; comprueba lo siguiente

Código:
int n;
char ap[15];
bool noexiste = 1;

printf("Ingrese Apellido: ");
scanf("%s", &ap);

while((n = fread(&cli, tam_cli, 1, pf))) {
	if(!(noexiste = stricmp(cli.apellido, ap))) {
		printf("Nombre: %s\tApellido: %s\n",cli.nombre, cli.apellido);
		break;
	}
}
if(noexiste) {
	printf("No existe el cliente\n");
}
fclose(pf);
En este caso solo encuentra la primera coincidencia de apellido, es decir que si hay varios apellidos iguales se los salta; si quieres que los muestre todos los que coinciden debes quitar el break.

Otra cosa, puede que este codigo te de problemas al insertarlo en el tuyo a causa del break que uso para salir del while; si no lo necesitas lo quitas y arreglado; si lo necesitas y te da error en la compilacion tendras que en cerrar todo el 'case' en {}

Aun otra cosa, no uses fflush con stdin; en este mismo foro ha salida ya varias veces formas de vaciar el stdin, no tendras problema para encontrar la forma correcta de hacerlo.

Y por favor indenta el codigo, será mejor para ti y para los que puedan ayudarte cuando tengas mas problemas y quieras preguntar en algun foro.

Saludos
vosk