Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: DevMind89 en 21 Agosto 2017, 14:31 pm



Título: Fichero secuencial binario
Publicado por: DevMind89 en 21 Agosto 2017, 14:31 pm
Hola buenas tengo en siguiente codigo:


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. struct stock{
  6. int cod_Articulo;
  7. int nivel_maximo;
  8. int nivel_minimo;
  9. int nivel_actual;
  10. char proveedor[30];
  11. int precio;
  12. }regstock;
  13.  
  14. struct pedidos{
  15. int cod_Articulo;
  16. char proveedor[30];
  17. int total_pedido;
  18. }regpedidos;
  19.  
  20.  
  21. int main()
  22. {
  23. FILE *stock,*pedidos;
  24.  
  25. stock = fopen("stock.dat","rb+");
  26. pedidos = fopen("pedidos.dat","rb+");
  27.  
  28. if(stock == NULL || pedidos == NULL)
  29. {
  30. puts("Error al intentar leer los archivos");
  31. }
  32. else
  33. {
  34. while(!feof(stock))
  35. {
  36. fread(&regstock,sizeof(regstock),1,stock);
  37. if(regstock.nivel_actual<regstock.nivel_minimo)
  38. {
  39. regpedidos.cod_Articulo=regstock.cod_Articulo;
  40. strcpy(regpedidos.proveedor,regstock.proveedor);
  41. regpedidos.total_pedido=regstock.nivel_maximo-regstock.nivel_actual;
  42. fwrite(&regpedidos,sizeof(regpedidos),1,pedidos);
  43. }
  44. }
  45. }
  46.  
  47. fclose(stock);
  48. fclose(pedidos);
  49.  
  50. return 0;
  51. }
  52.  

Lo que quiero saber si este código esta bien, necesito leer el fichero stock, y si el nivel actual es menor que el nivel mínimo, grabar los datos en el fichero pedidos. El total_pedido es la cantidad máxima de pedido que hacer que hacer hasta llegar al nivel máximo.

Me refiero a que si mi código esta bien para leer un fichero, cumplir una condición y si es así, escribir datos en otro fichero. No puedo saber si anda ya que los ficheros stock y pedidos, no los tengo hay que imaginar que están hechos con contenido almacenado en su interior.



· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex


Título: Re: Fichero secuencial binario
Publicado por: Serapis en 21 Agosto 2017, 15:19 pm
No deja de ser gracioso, que tu no quieras probar tu propio código, porque 'no tienes los ficheros' y en cambio pidas a los demás que lo 'prueben', que ni tienen los ficheros, ni lo hicieron.

Si no tienes ficheros, los creas, con valores ficticios y lo pruebas, como mínimo para asegurarte que no genera errores...
Luego, si altera un dato en una posición incorrecta o no, eso es algo que debes probar con un fichero 'original' (aunque sea una copia, por supuesto).

Aquí nadie tiene forma de saber si 'total' aparece en determinada posición o no.
En principio si tus ficheros contienen (en cada uno) solo registros y nada más que registros y de un solo tipo, no debería ser problemático, no hay que calcular desplazamientos debido a cabeceras ni irregularidades por la desimetría de determinados campos (los char son arrays de tamaño fijo, según declaraste en las estructuras)... así que puedes proceder a probar creando tu mismo unos ficheros, metiendo registros ficticios (pero con valores razonables).

Sólo si tienes errores y no logras localizarlos es cuando compete, reclamar ayuda.... ehmmmm... que tu código, no opera sobre una central nuclear, no requiere una supervisión previa y justificada para que lo pruebes...  :laugh: :laugh: :laugh: