[C con Clase] Error al ejecutar un programa
Javier Cancio del Busto
sepholin en gmail.com
Lun Mayo 26 22:46:21 CEST 2008
Buenas! Estoy haciendo un programa para clase, y he llegado un punto en el
que al ejecutarlo e introducir un dato, se me cuelga. Tras varios testeos
llegué a la conclusión de que la función que genera ese error es la
siguiente:
/******
* Partiendo de un NIF, que no es otra cosa que una cadena de caracteres
(totalmente validado), recorre unos ficheros en busca de una fecha, y si la
fecha actual
* es mayor que un mes de la que figura en el registro, se sanciona.
*
****************/
void Sancionar_Usuario (NIF dni_existente) {
reg_prestamo rp;
Reg_clientes rc;
FILE *FP;
FILE *FC;
int dia, mes, anyo, dia_actual, mes_actual, anyo_actual, sancion=0;
int encontrado=0, ecliente=0;
Fecha actual;
// Si pongo aqui un printf no llega a ejecutarse, por lo que supuse que
el error lo daria antes
if ((FP=fopen("prestamos.dat", "rb"))==NULL) exit(0);
genera_fecha(actual); // Guarda en Fecha (que es una cadena de
caracteres) la fecha actual.
while(!encontrado && fread(&rp, sizeof(rp), 1, FP))
if(strcmp(rp.NIFcliente, dni_existente)==0)
encontrado=1;
if(encontrado==1){
dia=(rp.fecha_prestamo[0]-'0')*10+(rp.fecha_prestamo[1]-'0');
mes=(rp.fecha_prestamo[2]-'0')*10+(rp.fecha_prestamo[3]-'0');
anyo=(rp.fecha_prestamo[4]-'0')*1000+(rp.fecha_prestamo[5]-'0')*100+(rp.fecha_prestamo[6]-'0')*10+(rp.fecha_prestamo[7]-'0');
dia_actual=(actual[0]-'0')*10+(actual[1]-'0');
mes_actual=(actual[2]-'0')*10+(actual[3]-'0');
anyo_actual=(actual[4]-'0')*1000+(actual[5]-'0')*100+(actual[6]-'0')*10+(actual[7]-'0');
if(anyo_actual>anyo)
sancion=1;
if(mes_actual>mes+1)
sancion=1;
if(mes_actual=mes+1)
if(dia_actual>dia)
sancion=1;
}
if(sancion==1){
if ((FC=fopen("clientes.dat", "rb"))==NULL) exit(0);
while(!ecliente && fread(&rc, sizeof(rc), 1, FC))
if(strcmp(dni_existente, rc.NIFcliente)==0)
ecliente=1;
rc.sancionado=1;
}
fclose(FP);
fclose(FC);
}
Muchas gracias por vuestra ayuda!
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080526/6b5100b2/attachment.html>
Más información sobre la lista de distribución Cconclase