Autor Tema: comparar dos ficheros  (Leído 3209 veces)

Desconectado beginner

  • Newbie
  • *
  • Mensajes: 3
comparar dos ficheros
« en: 16 de Diciembre de 2004, 09:40:31 am »
Mu buenas... Tengo un programa para comparar dos ficheros, uno de pedidos y otro de lo que hay disponible en el almacén, pero no funciona.  :( Me parece que sólo está haciendo correr uno de los ficheros, pero no sé cómo solucionarlo. ¿Alguien tiene una sugerencia?

#include<stdio.h>
#include<conio.h>
#include<values.h>
#include<stdlib.h>
#include<ctype.h>
void proceso(void);
void leer_almacen(void);
void leer_pedidos(void);
void encontrado(void);
void error(void);
FILE *alma, *ped;
struct
 {
 long cod_ar;
 char deno[30];
 float pv;
 short exis;
 }reg_alma;

struct
 {
 long cod_ar;
 short uni;
 long cod_cli;
 }reg_ped;

 short er;

void main(void)
{
alma=fopen("c:\\almacen.dat", "r");
if (alma!=NULL)
 {
 ped=fopen ("c:\\pedidos.dat","r");
 if (ped!=NULL)
  {
  proceso();
  fcloseall();
  }
 else
  {
  clrscr();
  printf("\n\tError de apertura en pedidos");
  printf("\n\tEste programa se cancelara");
  printf("\n\tPulse cualquier tecla para terminar");
  fflush(stdin);
  getch();
  fclose (alma);
  }
 }
else
 {
 clrscr();
  printf("\n\tError de apertura en almacen");
  printf("\n\tEste programa se cancelara");
  printf("\n\tPulse cualquier tecla para terminar");
  fflush(stdin);
  getch();
 }
clrscr();
}
             
               //EN ESTA FUNCION PIENSO QUE ESTA EL PROBLEMA:

void proceso(void)
{
leer_almacen();
leer_pedidos();
while (feof(ped)==0)
 {
 if (reg_ped.cod_ar>reg_alma.cod_ar)
  {
  leer_almacen();
  if (feof(alma)!=0)
  reg_alma.cod_ar=MAXLONG;
  }
 else
  {
  if (reg_ped.cod_ar==reg_alma.cod_ar)
  encontrado();
  else
  error();
  leer_pedidos();
  }
 }

}

void leer_almacen(void)
{
er=fread(&reg_alma, sizeof(reg_alma), 1, alma);
if(er!=1&&feof(alma)==0)
 {
 clrscr();
 printf("\n\tError de lectura en almacen");
 printf("\n\tPrograma cancelado");
 printf("\n\tPulse cualquier tecla para salir");
 fflush(stdin);
 getch();
 clrscr();
 exit(1);
 }
}

void leer_pedidos(void)
{
er=fread(&reg_ped, sizeof(reg_ped), 1, ped);
if (er!=1&&feof(ped)==0)
 {
 clrscr();
 printf("\n\tError de lectura en pedidos");
 printf("\n\tPrograma cancelado");
 printf("\n\tPulse cualquier tecla para salir");
 fflush(stdin);
 getch();
 clrscr();
 exit(1);
 }
}

void encontrado(void)
{
clrscr();
gotoxy (26,3);
printf("Proceso de atencion de pedidos");
if (reg_ped.uni>reg_alma.exis)
printf("Pedido no atendido - articulo: %ld, unidades: %ld, existencias: %d, cliente %ld", reg_alma.cod_ar, reg_ped.uni, reg_alma.exis, reg_ped.cod_cli);
else
printf("Pedido atendido - articulo: %ld, unidades: %ld, cliente %ld", reg_ped.cod_ar, reg_ped.uni, reg_ped.cod_cli);
fflush(stdin);
getch();
}

void error(void)
{
clrscr();
gotoxy (26,3);
printf("Proceso de atencion de pedidos");
printf("\n\n\tCodigo de articulo %ld no existe en almacen", reg_ped.cod_ar);
printf("\n\n\tPulse cualquier tecla para salir");
fflush(stdin);
getch();
exit(1);
}

Desconectado Leandros

  • Member
  • ***
  • Mensajes: 421
comparar dos ficheros
« Respuesta #1 en: 16 de Diciembre de 2004, 10:54:46 am »
Lo imprimiré y me lo miro tranquilamente.

Saludetes.

PD:Joee que ganas tengo de tener mi portatil de nuevo  :cry:

Desconectado destroyer

  • Administrator
  • *
  • Mensajes: 15870
  • Si quieres cambiar al mundo, cámbiate a ti mismo
    • cajondesastres.com De todo un poco
comparar dos ficheros
« Respuesta #2 en: 16 de Diciembre de 2004, 01:20:25 pm »
Hola:
 Bienvenido al foro beginner...

A ver que te comentan..

un saludo

Desconectado jirho

  • Member
  • ***
  • Mensajes: 303
comparar dos ficheros
« Respuesta #3 en: 04 de Enero de 2005, 04:27:57 pm »
...bueno, creo que muy tarde, pero para la duda...en primer lugar creo te estas complicando mucho...en segundo, no veo como comparas las cadewnas de los pedidos...lo mejor seria leer el pedido  e ir comparandolo con el cada articulo del almacen...veo que es un archivo binario...lomejor seria que trabajaras con archivos de texto...saludos...
[root@local_host jirho]#Conecting to underground zone...:superman:

http://www.hackeando.com/gifs/logomini.gif

 

Aviso Legal | Política de Privacidad | Política de Cookies

el contenido de la web se rige bajo licencia
Creative Commons License