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>