A ver si alguien puede encontrar donde esta el fallo en este programa. Q tiene q asignar un codigo de cliente automaticamente empezando de 0. El primer codigo, es decir 1 me lo da bien, pero si intento agregar un cliente nuevo me da un numero de cliente del estilo -85055464 o algo asi. Si alguien sabe como solucionarlo, q me lo diga plis
Aki esta el codigo del programa en si
#include<stdio.h>
typedef struct
{
int codi;
char nom[30];
float descompte[2];
int IVA[2];
}clients;
typedef struct
{
int codi;
int quilos[5];
float preuxk[2];
}vendes;
main()
{
int opcio;
void alta_client();
int comprobar_codi();
/* void venda();
void consulta();
void resum_vendes();*/
printf("TRIA UNA OPCIO\n\n");
printf("1-Nou Client\n");
printf("2-Venda\n");
printf("3-Consulta Client\n");
printf("4-Resum Vendes\n");
printf("\nQUE VOLS FER:");
scanf("%d",&opcio);
switch (opcio)
{
case 1:
alta_client();
break;
/*case 2:
venda();
break;
case 3:
consulta();
break;
case 4:
resum_vendes();
break;*/
default:
printf("Opcio incorrecta\n");
}
}
void alta_client()
{
clients clients;
char continuar='s';
int darrercodi=0;
int comprobar_codi();
FILE *altaclients;
while (continuar=='s')
{
darrercodi=comprobar_codi();
altaclients=fopen("clients.dat","a");
printf("El CODI del nou client es %d\n",darrercodi);
printf("\nEscriu el NOM del nou client:");
scanf("%s",&clients.nom);
printf("\nEscriu el DESCOMPTE del nou client:");
scanf("%i",&clients.descompte);
printf("\nEscriu l'IVA del nou client:");
scanf("%d",&clients.IVA);
printf("\nVols donar d'alta a un altre client? (s)i/(n)o:");
continuar='b';
while((continuar!='s') && (continuar!='n'))
{
scanf("%c",&continuar);
}
fwrite(&clients,sizeof(clients),1,altaclients);
fclose(altaclients);
}
}
int comprobar_codi()
{
clients clients;
int darrercodi=0;
int finalfitxer;
FILE *altaclients;
altaclients=fopen("clients.dat","a+");
finalfitxer=fread(&clients,sizeof(clients),1,altaclients);
while((finalfitxer!=0) && (feof(altaclients)==0))
{
darrercodi=clients.codi;
finalfitxer=fread(&clients,sizeof(clients),1,altaclients);
}
darrercodi++;
fclose(altaclients);
return darrercodi;
}
PD: Hay apartados puesto como comentario pq aun me falta hacer esos apartados. No creo q tenga nada q ver con el problema
problema programa en c++
Moderador: Moderadores