Ayuda con error ejecutando un programa en C

Iniciado por solid120, 3 Junio 2012, 01:36 AM

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

solid120

Hola, espero que me puedan ayudar tengo un error que llevo ya casi 2 dias sin poder hacer nada
tengo que entregar un proyecto final en C,
el programa me compila y todo, pero al querer hacer las consultas me salta este me manda a "Error" directamente que es lo que me debe de imprimir si no tengo datos ya cheque consulta.c y veo todo bien, desde consulta.c mando a llamar ordenar.c que es la que ordena los datos, e igual lo miro bien, por eso pido de su ayuda a ver si encuentran un error.
archivos apenas vimos una clase y nos encargaron el proyecto asi, y por lo poco que vimos la verdad tengo muchas dudas.
bueno si mas le dejo los codigos:
consulta.c

#include<stdio.h>
#include"estructura.h"
void consultag()
{FILE *Art;
articulo A;
ordenar();
if((Art=fopen("Arti.dat","rb"))==NULL){
         printf("Error...");
exit(0);}
else
{write(fread(&A,sizeof(articulo),1,Art)>0);
        imprimir(A);
        fclose(Art);
}
}


ordenar.c

#include<stdio.h>
#include"estructura.h"
void ordenar()
{FILE *Art;
articulo A,A2,aux;
int x,y;
long int N;
if((Art=fopen("arti.dat","rb+"))==NULL)
{ printf("Error...\n");
         exit (0);}
else
{fseek(Art,0L,2);
         N=ftell(Art)/sizeof(articulo);
         rewind(Art);
         for(x=1;x<N;x++)
                 for(y=0;y<N-x;y++)
                 {fseek(Art,y*sizeof(articulo),0);
                  fread(&A,sizeof(articulo),1,Art);
                  fseek(Art,(y+1)*sizeof(articulo),0);
                  fread(&A2,sizeof(articulo),1,Art);
                  if(A.precio>A2.precio)
                  {aux=A;
                   A=A2;
                   A2=aux;
                   fseek(Art,y*sizeof(articulo),0);
                   fwrite(&A,sizeof(articulo),1,Art);
                   fseek(Art,(y+1)*sizeof(articulo),0);
                   fwrite(&A2,sizeof(articulo),1,Art);
                                  }
                 }
         fclose(Art);
}
}


El problema es que me imprime "error" y tambien he llege a pensar que podrian ser las altas
por si acaso les dejo el codigo de altas.c

#include<stdio.h>
#include<stdlib.h>
#include"estructura.h"
void  altas()
{FILE *Art;
        articulo A;
        char salir[5];
        float t;
        Art=fopen("arti.dat","ab");
        do{
        printf("Clave del articulo:\n");
         scanf("%s",&A.clave);
         system("clear");
         printf("Tipo:\nBlusa:\nVestido:\nZapato:\nAccesorio:\n");
         scanf("%s",&A.tipo);
         printf("Descripcion del articulo:\n");
         system("clear");
         printf("Color:\n");
         scanf("%s",&A.descrip.color);
         system("clear");
         printf("Medida\n");
         scanf("%s",&A.descrip.medida);
         system("clear");
         printf("Precio articulo:\n");
         scanf("%f",&t);
         A.precio=t;
         system("clear");
         printf("Codigo de barras:\n");
         scanf("%d",&A.codb);
         getc(stdin);
         system("clear");
         printf("Desea ingresar otro articulo?(S/N)\n");
         scanf("%s",salir);
         fwrite(&A,sizeof(articulo),1,Art);
        }while(strcmp(salir,"no"));
        fclose(Art);
}


Espero que me puedan ayudar por favor, seria de gran gran ayuda.

durasno

Hola! si te imprime error puede ser por el nombre del archivo q le pasas a fopen. En consulta.c usas "Arti.dat", la primera letra en mayuscula
En ordenar.c y altas.c usas "arti.dat", todo en minuscula

"Arti.dat" y "arti.dat" son dos cosas distintas. Saludos
Ahorrate una pregunta, lee el man