En cuanto tenga una máquina delante para teclear código te voy a hacer unos ejemplos. No voy a corregirte todo el código ya que supongo esti es un trabajo escolar tuyo.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct materiales{
int codart, stock, stockmin;
char desc[20];
float precio;
};
struct ventas{
int cod,cant;
};
//ACA YO CARGO EL ARCHIVO AMTERIALES
int main() {
FILE *archivomateriales;
FILE *archivoventa;
int op;
struct materiales mat;
struct ventas ven;
if((archivomateriales=fopen("materiales.dat","wb")) != NULL) {
do {
printf("\n\tIngrese el codigo del articulo");
scanf("%d", &mat.codart);
printf("\n\tIngrese un breve descripcion");
getchar();
fgets(mat.desc, 20, stdin);
printf("\n\tIngrese stock actual del articulo");
scanf("%d", &mat.stock);
printf("\n\tIngrese stock minimo");
scanf("%d", &mat.stockmin);
printf("\n\tPor utimo ingrese precio");
scanf("%f", &mat.precio);
fwrite(&mat, sizeof(mat), 1, archivomateriales);
printf("\n\t¿Desea ingresar otro articulo? [1]-Para SI // [0]-Para NO");
scanf("%d", &op);
} while(op != 0);
}
else {
printf("\n\nError de archivo");
}
fclose(archivomateriales);
//ACA YO CARGO EL ARCHIVO VENTAS
int opc;
if((archivoventa=fopen("ventas.dat","wb")) != NULL) {
do{
printf("\n\tIngrese codigo del articulo");
scanf("%d", &ven.cod);
printf("\n\tIngrese cantidad vendida del articulo");
scanf("%d", &ven.cant);
fwrite(&ven,sizeof(ven),1,archivoventa);
printf("\n\t¿Desea registrar otra venta? [1]-Para SI // [0]-Para NO");
scanf("%d", &opc);
} while(opc!=0);
}
else {
printf("\nError de archivo");
}
fclose(archivoventa);
//ACA ES DONDE ESTA LA FALLA
if((archivoventa=fopen("ventas.dat","rb")) != NULL) {
if((archivomateriales=fopen("materiales.dat","r+b")) != NULL) {
fread(&ven, sizeof(ven), 1, archivoventa);
while(!feof(archivoventa)) {
fread(&mat, sizeof(mat), 1, archivomateriales);
while(!feof(archivomateriales)) {
if(mat.codart == ven.cod) {
mat.stock = mat.stock-ven.cant;
printf("\n\nEl stock entonces quedo en %d", mat.stock);
fseek(archivomateriales, -1*(sizeof(mat)),SEEK_CUR);
fwrite(&mat,sizeof(mat), 1, archivomateriales);
}
fread(&mat, sizeof(mat), 1, archivomateriales);
printf("\nHola");
}
rewind(archivomateriales);
fread(&ven,sizeof(ven),1,archivoventa);
printf("\nHola2");
}
}
else {
printf("\nError archivo");
}
fclose(archivomateriales);
}
else {
printf("\nError archivo");
}
fclose(archivoventa);
printf("\n\t\tError3");
if((archivomateriales=fopen("materiales.dat","rb")) != NULL){
fread(&mat, sizeof(mat), 1, archivomateriales);
while(!feof(archivomateriales)) {
printf("\n\nEl codigo de articulo es %d", mat.codart);
printf("\n\nEl stock actualizado quedo asi %d", mat.stock);
fread(&mat, sizeof(mat), 1, archivomateriales);
}
}
else {
printf("Error");
}
fclose(archivomateriales);
}