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
Código:
#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
Código:
#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
Código:
#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.