Ver Mensaje Individual
  #11 (permalink)  
Antiguo 21/03/2013, 18:20
cesar_casla
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Problema con Busqueda en archivo binario

Que raro, hice un programa de prueba y me anda bien:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. struct Cliente {
  6.     char nombre[20];
  7.     char apellido[20];
  8. };
  9.  
  10. void Clientes(void);
  11.  
  12. int main(){
  13.    
  14.         Clientes();
  15.        
  16.         return 0;
  17.  
  18. }
  19.  
  20. void Clientes(){
  21.     system("cls");
  22.     FILE *pf;
  23.     struct Cliente cli;
  24.     int tam_cli= sizeof(cli);
  25.  
  26. int elegi,op=0;
  27. while(op==0){
  28. system("cls");
  29. printf("1>__Ingresar nuevo cliente\n");
  30. printf("2>__Buscar Cliente\n");
  31. printf("3>__Salir\n");
  32. scanf("%d",&elegi);
  33.  
  34. switch(elegi)
  35. {
  36. case 1:
  37. pf= fopen("Clientes.dat","ab");
  38. if(pf==NULL)
  39. {
  40. perror("error al abrir el archivo");
  41. return;
  42. }
  43. system("cls");
  44. do
  45. {
  46. printf("Nombre: ");
  47. scanf("%s",&cli.nombre);
  48. printf("Apellido: ");
  49. scanf("%s",&cli.apellido);
  50. //printf("Direccion: ");
  51. /*scanf("%s",&cli.direccion);
  52. printf("Cumpleaños: ");
  53. scanf("%s",&cli.fechacumple);
  54. printf("Fecha de compra: ");
  55. scanf("%s",&cli.fechacompra);
  56. printf("Ingrese Articulo vendido\n");
  57. scanf("%s",&cli.com.articulo);
  58. printf("Ingrese el talle\n");
  59. scanf("%s",&cli.com.talle);*/
  60. fwrite(&cli,tam_cli,1,pf);
  61. fflush(stdin);
  62. printf("Desea seguir ingresando Clientes presione 0 sino 1\n");
  63. scanf("%d",&op);
  64. }
  65. while(op==0);
  66. fclose(pf);
  67. break;
  68. case 2:
  69. pf= fopen("Clientes.dat","rb");
  70. if(pf==NULL)
  71. {
  72. perror("error al abrir el archivo");
  73. return;
  74. }
  75. int n;
  76. system("cls");
  77. char ap[15];
  78. printf("Ingrese Apellido: ");
  79. scanf("%s",&ap);
  80. while((n=fread(&cli,tam_cli,1,pf))!=0&&stricmp(cli .apellido,ap)!=0);
  81. if(n==0)
  82. {
  83. printf("No existe el cliente \n");
  84. system("PAUSE");
  85. }
  86. else
  87. {
  88. printf("Nombre: %s\tApellido: %s\n",cli.nombre,cli.apellido);
  89. system("PAUSE");
  90. }
  91.  
  92. fclose(pf);
  93. break;
  94. case 3:
  95. return;
  96. default:
  97. printf("Error ingrese un numero del 1 al 3\n");
  98. }
  99. }
  100. }