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