Fichero secuencial binario

Iniciado por DevMind89, 21 Agosto 2017, 14:31 PM

0 Miembros y 1 Visitante están viendo este tema.

DevMind89

Hola buenas tengo en siguiente codigo:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct stock{
int cod_Articulo;
int nivel_maximo;
int nivel_minimo;
int nivel_actual;
char proveedor[30];
int precio;
}regstock;

struct pedidos{
int cod_Articulo;
char proveedor[30];
int total_pedido;
}regpedidos;


int main()
{
FILE *stock,*pedidos;

stock = fopen("stock.dat","rb+");
pedidos = fopen("pedidos.dat","rb+");

if(stock == NULL || pedidos == NULL)
{
puts("Error al intentar leer los archivos");
}
else
{
while(!feof(stock))
{
fread(&regstock,sizeof(regstock),1,stock);
if(regstock.nivel_actual<regstock.nivel_minimo)
{
regpedidos.cod_Articulo=regstock.cod_Articulo;
strcpy(regpedidos.proveedor,regstock.proveedor);
regpedidos.total_pedido=regstock.nivel_maximo-regstock.nivel_actual;
fwrite(&regpedidos,sizeof(regpedidos),1,pedidos);
}
}
}

fclose(stock);
fclose(pedidos);

return 0;
}


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
-Engel Lex

Serapis

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: