elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda para hacer una función que busque en un archivo - C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda para hacer una función que busque en un archivo - C  (Leído 3,241 veces)
lucasxxviii

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Ayuda para hacer una función que busque en un archivo - C
« en: 24 Junio 2016, 06:43 am »

Código
  1. #include<stdio.h>
  2. #include<ctype.h>
  3. #include<string.h>
  4. #include<stdlib.h>
  5.  
  6. typedef struct
  7. {
  8.    char marca[50];
  9.    char modelo[50];
  10.    float precio;
  11.    int cantidad;
  12. }impresora;
  13.  
  14.  
  15. void imprimir_menu (){
  16.  
  17.  
  18. printf("\n\t ...MENU....\n");
  19. printf("1) Agregar Informacion de una impresora: \n");
  20. printf("2) Mostrar el contenidp del archivo\n");
  21. printf("3) Busqueda de impresoras por marca y precio \n");
  22. printf("4) Salir del programa\n");
  23. printf("\n\tOpcion: ");
  24.  
  25.  
  26. }
  27.  
  28. void agregar_impresora(){
  29. impresora imp;
  30.  
  31. FILE * miarchivo;
  32. char*  nombrearchivo = "Problema2.txt";
  33.  
  34. miarchivo= fopen (nombrearchivo, "a");  // agrega al final
  35.  
  36. if(miarchivo==NULL) return -1 ;
  37.  
  38.  
  39. printf("\n\n\t....Informacion de impresora....: \n\n ");
  40. fflush(stdin);
  41.  
  42. printf("Ingrese la Marca: ");
  43. scanf("%[^\n]",&imp.marca);
  44. fprintf(miarchivo,"Marca: %s\n",imp.marca);
  45.  
  46. fflush(stdin);
  47. printf("Ingrese el Modelo: ");
  48. scanf("%[^\n]",&imp.modelo);
  49. fprintf(miarchivo,"Modelo: %s\n",imp.modelo);
  50.  
  51. fflush(stdin);
  52. printf("Ingrese el Precio: ");
  53. scanf("%f",&imp.precio);
  54. fprintf(miarchivo,"Precio:$ %2.f\n",imp.precio);
  55.  
  56. fflush(stdin);
  57. printf("Ingrese la Cantidad: ");
  58. scanf("%d",&imp.cantidad);
  59. fprintf(miarchivo,"Cantidad:%d\n\n\n",imp.cantidad);
  60.  
  61.  
  62.  
  63.  
  64. fclose(miarchivo);
  65. }
  66.  
  67. /*void mostrar_impresora(){
  68.  
  69. FILE* miarchivo;
  70. char* nombrearchivo="Problema2.txt" ;
  71. char nombretemp[50];
  72. int termino=0;
  73.  
  74. miarchivo = fopen(nombrearchivo,"r");
  75. if (miarchivo==NULL) return -1;
  76.  
  77. printf("Lista de Impresoras: \n");
  78.  
  79. termino=fscanf(miarchivo, " %[^\n]",&nombretemp);
  80. // fcanf devuelve EOF si esta al final de archivo
  81.  
  82. while(termino!=EOF){
  83.  
  84. printf("%s\n",nombretemp);
  85.  
  86. termino=fscanf(miarchivo, " %[^\n]",&nombretemp);
  87. }
  88.  
  89.  
  90. fclose(miarchivo);
  91.  
  92.  
  93. }*/
  94.  
  95. void mostrar_impresora(){
  96. FILE *miarchivo;
  97. int c;
  98.  
  99. char direccion[]= "Problema2.txt";
  100. miarchivo = fopen(direccion,"r"); //r = read - leer
  101.  
  102. if(miarchivo == NULL){
  103. printf("Error al tratar de leer el archivo");
  104. return -1;
  105. }
  106.  
  107. while((c=fgetc(miarchivo))!=EOF){
  108. if(c == '\n'){
  109. printf("\n");
  110. }
  111. else{
  112. putchar(c);
  113. }
  114.  
  115. }
  116.  
  117.  
  118. fclose(miarchivo);
  119.  
  120.  
  121. }
  122.  
  123.  
  124.  
  125.  
  126. void buscar_impresora(){
  127.  
  128. }
  129.  
  130.  
  131.  
  132.  
  133. int main(){
  134.  
  135. int salir=0;
  136. int opcion;
  137.  
  138.  
  139.  
  140.  
  141. while(salir==0){
  142. opcion=-1;
  143.  
  144. imprimir_menu();
  145.  
  146. fflush(stdin);
  147. scanf("%d",&opcion);
  148.  
  149. if(opcion==4) salir=1;
  150. if(opcion==1) agregar_impresora();
  151. if(opcion==2) mostrar_impresora();
  152. if(opcion==3) buscar_impresora();
  153.  
  154.  
  155.  
  156.  
  157. }
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164. system("pause");
  165.  
  166. return 0;
  167. }
  168.  
  169.  
  170.  


No puedo hacer la funcion de buscar necesito que realice esta condicion:

* busqueda de impresora por marca y precio,
 (en esta opcion se debe ingresar una marca y dos numeros reales, luego mostrar todos
 los datos de la impresoras en donde exista coincidencia con la marca y los precios deben estar comprendidos entre los dos numeros ingresados.

 desde ya muchas gracias al que me pueda ayudar.





En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda para hacer una función que busque en un archivo - C
« Respuesta #1 en: 24 Junio 2016, 09:28 am »

No hagas el archivo en modo texto, hazlo binario. Introduce los datos tal y como están en la estructura sin añadidos como Marca: , Modelo: , etc. Así los podrás sacar directamente y cargar una estructura cuándo los leas. De esta forma podrás comparar los datos que quieras con la estructura que habrás rellenado.


En línea

lucasxxviii

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Ayuda para hacer una función que busque en un archivo - C
« Respuesta #2 en: 24 Junio 2016, 16:26 pm »

Si comprendo que puedo hacer la busqueda con el archivo en binario, pero justo este enunciado me pide que sea .txt y no entiendo como puedo realizar esa busqueda. Gracias
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda para hacer una función que busque en un archivo - C
« Respuesta #3 en: 24 Junio 2016, 17:45 pm »

Parecido: cargas cada dato de la estructura en modo texto con fprintf, pon un carácter de retorno de carro.
A la hora de leer cargas los datos a la estructura convirtiéndolos a los que necesites mediante sscanf. Una vez que tienes la estructura cargada comparas los datos que necesitas.
En línea

lucasxxviii

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Ayuda para hacer una función que busque en un archivo - C
« Respuesta #4 en: 24 Junio 2016, 18:46 pm »

Disculpa mi ignorancia se programar pero basico por ahora, me podrias explicar o mostrarme un ejemplo si no es mucha molestia, gracias por la ayudad.
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Ayuda para hacer una función que busque en un archivo - C
« Respuesta #5 en: 24 Junio 2016, 23:11 pm »

Hola.

Te dejo unos videos que he hecho al respecto:





Saludos!
En línea

lucasxxviii

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Ayuda para hacer una función que busque en un archivo - C
« Respuesta #6 en: 25 Junio 2016, 01:43 am »

Muchas gracias por la ayuda.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines