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:<br>
<br><br>/******<br>* 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<br>* es mayor que un mes de la que figura en el registro, se sanciona.<br>
*<br>****************/<br><br>void Sancionar_Usuario (NIF dni_existente) {<br><br> reg_prestamo rp;<br> Reg_clientes rc;<br> FILE *FP;<br> FILE *FC;<br> <br><br><br> int dia, mes, anyo, dia_actual, mes_actual, anyo_actual, sancion=0;<br>
int encontrado=0, ecliente=0;<br> Fecha actual;<br><br> // Si pongo aqui un printf no llega a ejecutarse, por lo que supuse que el error lo daria antes<br> <br> if ((FP=fopen("prestamos.dat", "rb"))==NULL) exit(0);<br>
<br><br> genera_fecha(actual); // Guarda en Fecha (que es una cadena de caracteres) la fecha actual.<br><br> while(!encontrado && fread(&rp, sizeof(rp), 1, FP))<br> if(strcmp(rp.NIFcliente, dni_existente)==0)<br>
encontrado=1;<br> <br><br> if(encontrado==1){<br> <br> dia=(rp.fecha_prestamo[0]-'0')*10+(rp.fecha_prestamo[1]-'0');<br> mes=(rp.fecha_prestamo[2]-'0')*10+(rp.fecha_prestamo[3]-'0');<br>
anyo=(rp.fecha_prestamo[4]-'0')*1000+(rp.fecha_prestamo[5]-'0')*100+(rp.fecha_prestamo[6]-'0')*10+(rp.fecha_prestamo[7]-'0');<br><br> dia_actual=(actual[0]-'0')*10+(actual[1]-'0');<br>
mes_actual=(actual[2]-'0')*10+(actual[3]-'0');<br> anyo_actual=(actual[4]-'0')*1000+(actual[5]-'0')*100+(actual[6]-'0')*10+(actual[7]-'0');<br> <br> if(anyo_actual>anyo)<br>
sancion=1;<br><br> if(mes_actual>mes+1)<br> sancion=1;<br> <br> if(mes_actual=mes+1)<br> if(dia_actual>dia)<br> sancion=1; <br> }<br><br><br> if(sancion==1){<br>
<br> if ((FC=fopen("clientes.dat", "rb"))==NULL) exit(0);<br><br><br> while(!ecliente && fread(&rc, sizeof(rc), 1, FC))<br> if(strcmp(dni_existente, rc.NIFcliente)==0)<br> ecliente=1;<br>
<br><br> rc.sancionado=1;<br> }<br><br><br> fclose(FP);<br> fclose(FC);<br><br><br> <br>} <br><br><br><br>Muchas gracias por vuestra ayuda!<br>