Hola:Como recomendacion especifica tambien el error que teda...NO SOLAMENTE ki que quieras que haga...El programa segun veo SIEMPRE escribe un fichero.... Debes de poner despues de WHILE el dato: fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);... ya que si te da una edad de 4, 5, 6.....N..... entonces se REPETIRA, hasta que nos de una edad de: 0, 1, 2,, entonces parara y escribira el dato en el fichero...byeeeeeeee
Bueno segun otro post tuyo, el bucle deberia romperse cuando el numero_anyo fuera mayor que 3 no es cierto?entonces la condición del while seria (numero_anyo<=3);y no '>3' ni '>=3'.Espero haberte ayudado. saludosdinos si es eso.
Podrias decirme que formato tiene el fichero alumnos.txt?no entiendo muy bien el bucle del Código: Text }while(!feof(ficbin)); se supone que el EOF se le marcas tú ¿no?¿no estas esperando a que llegue?mandame el fichero alumnos.txt y le hecho un vistazo haber si puedo ayudartesaludos
Hola, vale ya entendí un poco más el problema. He encontrado varios fallos:1- en esta condición:Código: Text ...while((car = fgetc(fp) != '\n')) /*se lee del fichero texto*/{ ... colocas los parentesis juntos (uno te sobraria) y lo que haces es meter en car, el resultado de la evaluación fgetc(fp) != '\n' que solo puede ser 0 si es falsa o 1 si es cierta.¿entiendes?deberias escribirlo:Código: Text ...while((car = fgetc(fp)) != '\n') /*se lee del fichero texto*/{ ... 2- Después, cuando entras en el bucleCódigo: Text do{ printf("Introduzca los Apellidos: ");gets(apellidos);printf("\n");printf("Introduzca el Nombre: ");gets(nombre);printf("\n");printf("Introduzca el Numero de años: ");scanf("%d",&numero_anyo); strcpy(d.nombre, nombre);strcpy(d.apellidos, apellidos);d.numero_anyo = numero_anyo; fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin); }while(numero_anyo >=3); no sales de aqui hasta que numero_anyo es menor que 3. de forma que si lee el primer dni y es correcto estaria pidiendo datos hasta que numero_anyo fuera menor de 3 sin leer ningún dni más ¿entiendes?el do deberia estar antes de leer el dni y la llave que cierra el if más abajo.3- Por ultimo.lo que tienes que esperar es el fin del fichero alumnos.txt que es del que lees y no del .binosea que seria:Código: Text ...}while(!feof(fd));... en vez deCódigo: Text }while(!feof(ficbin)); .Con esto el programa ya funcionaria más o menos.otra cosa:yo no habia oido hablar de la función isspace asique la cambie por Código: Text car==' ' Otra cosa, si en el archivo colocas algun espacio despues del dni en vez de directamente un salto de linea te da error. Deberias buscar una forma mejor de leer los caracteres del fichero alumnos.txt Por supuesto no te voy a enviar el codigo corregido.creo que tienes mucho que aprender aun. tanto como yo:hitcomp: Pero para cualquier consulta preguntame que tratare de ayudarte Suerte.