Hola:Hola he hecho lo que tu me has dicho, pero nada,no me funciona, si que me compilar, pero no me coge bien la condición de salida, de while.
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
:hola: Bueno segun otro post tuyo, el bucle deberia romperse cuando el numero_anyo fuera mayor que 3 no es cierto?Lo que yo quiero es que el bucle se salga, cuando le meta un numero <3, y entonces me meta esos datos, en el fichero binario. Por favor,no se si etoy haciendo bien, dandole a citar,para responderle a usted,pero es que no se como se responde directamente a la persona. Si usted me lo puede decir, asi lo sabre para la proxima. Muchas gracias por su ayuda.
entonces la condición del while seria (numero_anyo<=3);
y no '>3' ni '>=3'.
Espero haberte ayudado. saludos
dinos si es eso.
:whistling:
:hola: Bueno segun otro post tuyo, el bucle deberia romperse cuando el numero_anyo fuera mayor que 3 no es cierto?Hola,lo que yo necesito,es q el bucle se salga,si se le introduce un numero_anyo < de 3,ya q el numero de años q se cursa en la carrera,como minimo es 3.Y despues de ello,quiero q los datos,que me piden por pantalla,me los meta en un fichero binario.Gracias.
entonces la condición del while seria (numero_anyo<=3);
y no '>3' ni '>=3'.
Espero haberte ayudado. saludos
dinos si es eso.
:whistling:
Podrias decirme que formato tiene el fichero alumnos.txt?Hola, mira aqui te mando el enunciado de la practica, asi lo entenderas mejor.
no entiendo muy bien el bucle delCó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 ayudarte
saludos
Hola, vale ya entendí un poco más el problema.Hola muchas gracias,acabo de verlo,y antes de probarlo,queria agradecerte, las molestias.Voy a probarlo, y ahora te digo,el resultado.
:hola:
He encontrado varios fallos:
1- :question:
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:D
... while((car = fgetc(fp)) != '\n') /*se lee del fichero texto*/ { ...
2- :question:
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- :question:
Por ultimo.
lo que tienes que esperar es el fin del fichero alumnos.txt que es del que lees y no del .bin
osea 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 porCó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
:alien: :alien: :alien: :alien: :alien: :alien: :alien: :alien:
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. :smartass: :comp:
:suerte: :hola:
Hola, vale ya entendí un poco más el problema.Gracias por tu ayuda,pero sigue sin salirme, veras ahora el codigo queda asi.
:hola:
He encontrado varios fallos:
1- :question:
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:D
... while((car = fgetc(fp)) != '\n') /*se lee del fichero texto*/ { ...
2- :question:
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- :question:
Por ultimo.
lo que tienes que esperar es el fin del fichero alumnos.txt que es del que lees y no del .bin
osea 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 porCó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
:alien: :alien: :alien: :alien: :alien: :alien: :alien: :alien:
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. :smartass: :comp:
:suerte: :hola: