• Sábado 21 de Diciembre de 2024, 17:37

Autor Tema:  Problemas Para Usar El While En C  (Leído 3312 veces)

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Problemas Para Usar El While En C
« en: Domingo 23 de Mayo de 2004, 04:09 »
0
El do - while, se puede utilizar una variable entera como condición de salida?. Es que a mi no me funciona este codigo.


#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define TAMANYODNI 10

struct alumno
{

  char DNI[10];
  char nombre[25];
  char apellidos[50];
  int numero_anyo;
 
 };
 
 typedef struct alumno DATOSALUMNO;
 

 
main()
{

FILE *fp;
FILE *ficbin;
DATOSALUMNO d;
char car;
char dni[10];
int i;
char nombre[25];
char apellidos[50];
int numero_anyo;

if((fp=fopen("alumnos.txt", "r"))== NULL)
{
    printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura
   return -1;
}
   
if((ficbin =fopen("alumnos.bin", "wb"))== NULL)
{
    printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura
   return -1;
   
}


do {

 while((car = fgetc(fp) != '\n'))  /*se lee del fichero texto*/
  {    
      if(isspace (car) == 0) //si c es un espacio en blanco
      /*car == " ") si c es un espacio en blanco*/  
      {
     
         
   for(i = 0; i<TAMANYODNI; i++)
         {
             dni = fgetc(fp);
   
         
         }
        strcpy(d.DNI, dni);  
 }/*cierre del if*/  
} /*cierre del while*/
         
 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 !=0);
  /* }cierre del while*/
   
}while(!feof(ficbin));

 
 fclose(ficbin);
 fclose(fp);
 
}







Lo que pretendo es que me presente los datos de arriba por pantalla, hasta que le meta un numero de años menor de 3, entonces se pare. Y esos datos los meta en un fichero binario.
Si alguien me puede ayudar, por favor,que lo haga es para un trabajo de fin de curso,de carrera.Para aprobar la asignatura de programacion.
Gracias

Diabliyo

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Problemas Para Usar El While En C
« Respuesta #1 en: Domingo 23 de Mayo de 2004, 06:23 »
0
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

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Problemas Para Usar El While En C
« Respuesta #2 en: Lunes 24 de Mayo de 2004, 17:05 »
0
Cita de: "Diabliyo"
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
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.

Asi es como he dejado el codigo, y no tengo ni idea porque no me coge bien, la condición de salida de do-while.

#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define TAMANYODNI 10

struct alumno
{

  char DNI[10];
  char nombre[25];
  char apellidos[50];
  int numero_anyo;
 
 };
 
 typedef struct alumno DATOSALUMNO;
 

 
main()
{

FILE *fp;
FILE *ficbin;
DATOSALUMNO d;
char car;
char dni[10];
int i;
char nombre[25];
char apellidos[50];
int numero_anyo;

if((fp=fopen("alumnos.txt", "r"))== NULL)
{
    printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura
   return -1;
}
   
if((ficbin =fopen("alumnos.bin", "wb"))== NULL)
{
    printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura
   return -1;
   
}


do {

 while((car = fgetc(fp) != '\n'))  /*se lee del fichero texto*/
  {    
      if(isspace (car) == 0) //si c es un espacio en blanco
      /*car == " ") si c es un espacio en blanco*/  
      {
     
         
   for(i = 0; i<TAMANYODNI; i++)
         {
             dni = fgetc(fp);
   
         
         }
        strcpy(d.DNI, dni);  
 }/*cierre del if*/  
} /*cierre del while*/
         
 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);
  /* }cierre del while*/
   
}while(!feof(ficbin));

 
 fclose(ficbin);
 fclose(fp);
 
}

Si puedes echale un vistazo, y me dices donde puedo tener el error. Vale?.
Gracias, saludos i82maria

Ezdlir

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Problemas Para Usar El While En C
« Respuesta #3 en: Lunes 24 de Mayo de 2004, 17:57 »
0
a ver...
miré más o menos el algoritmo y hay algo que no entiendo: ficbin es un archivo abierto para escritura ¿tiene sentido preguntar por feof(ficbin)? :question:

suerte
Ez.

patitofeo

  • Miembro MUY activo
  • ***
  • Mensajes: 145
    • Ver Perfil
Re: Problemas Para Usar El While En C
« Respuesta #4 en: Lunes 24 de Mayo de 2004, 18:15 »
0
:hola: 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. saludos

dinos si es eso.

 :whistling:

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Problemas Para Usar El While En C
« Respuesta #5 en: Lunes 24 de Mayo de 2004, 21:33 »
0
Cita de: "patitofeo"
:hola: 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. saludos

dinos si es eso.

 :whistling:
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.

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Problemas Para Usar El While En C
« Respuesta #6 en: Martes 25 de Mayo de 2004, 17:20 »
0
Cita de: "patitofeo"
:hola: 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. saludos

dinos si es eso.

 :whistling:
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.

patitofeo

  • Miembro MUY activo
  • ***
  • Mensajes: 145
    • Ver Perfil
Re: Problemas Para Usar El While En C
« Respuesta #7 en: Miércoles 26 de Mayo de 2004, 18:14 »
0
Podrias decirme que formato tiene el fichero alumnos.txt?

no entiendo muy bien el bucle del

Código: Text
  1.  
  2. }while(!feof(ficbin));
  3.  
  4.  

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

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Problemas Para Usar El While En C
« Respuesta #8 en: Jueves 27 de Mayo de 2004, 00:25 »
0
Cita de: "patitofeo"
Podrias decirme que formato tiene el fichero alumnos.txt?

no entiendo muy bien el bucle del

Código: Text
  1.  
  2. }while(!feof(ficbin));
  3.  
  4.  

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, mira aqui te mando el enunciado de la practica, asi lo entenderas mejor.
Vale?. Gracias por tu ayuda.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

patitofeo

  • Miembro MUY activo
  • ***
  • Mensajes: 145
    • Ver Perfil
Re: Problemas Para Usar El While En C
« Respuesta #9 en: Viernes 28 de Mayo de 2004, 15:16 »
0
Hola, vale ya entendí un poco más el problema.

 :hola:
He encontrado varios fallos:

1- :question:

 en esta condición:
Código: Text
  1.  
  2. ...
  3. while((car = fgetc(fp) != '&#092;n')) /*se lee del fichero texto*/
  4. {
  5. ...
  6.  
  7.  

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
  1.  
  2. ...
  3. while((car = fgetc(fp)) != '&#092;n') /*se lee del fichero texto*/
  4. {
  5. ...
  6.  
  7.  
:D

2- :question:

Después, cuando entras en el bucle

Código: Text
  1.  
  2. do{
  3. printf(&#34;Introduzca los Apellidos: &#34;);
  4. gets(apellidos);
  5. printf(&#34;&#092;n&#34;);
  6. printf(&#34;Introduzca el Nombre: &#34;);
  7. gets(nombre);
  8. printf(&#34;&#092;n&#34;);
  9. printf(&#34;Introduzca el Numero de años: &#34;);
  10. scanf(&#34;%d&#34;,&numero_anyo);
  11.  
  12. strcpy(d.nombre, nombre);
  13. strcpy(d.apellidos, apellidos);
  14. d.numero_anyo = numero_anyo;
  15.  
  16.  
  17. fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);
  18.  
  19. }while(numero_anyo &#62;=3);
  20.  
  21.  

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
  1.  
  2. ...
  3. }while(!feof(fd));
  4. ...
  5.  
  6.  

en vez de

Código: Text
  1.  
  2. }while(!feof(ficbin));
  3.  
  4.  
.


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
  1.  
  2. car==' '
  3.  
  4.  

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:

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Problemas Para Usar El While En C
« Respuesta #10 en: Viernes 28 de Mayo de 2004, 19:15 »
0
Cita de: "patitofeo"
Hola, vale ya entendí un poco más el problema.

 :hola:
He encontrado varios fallos:

1- :question:

 en esta condición:
Código: Text
  1.  
  2. ...
  3. while((car = fgetc(fp) != '&#092;n')) /*se lee del fichero texto*/
  4. {
  5. ...
  6.  
  7.  

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
  1.  
  2. ...
  3. while((car = fgetc(fp)) != '&#092;n') /*se lee del fichero texto*/
  4. {
  5. ...
  6.  
  7.  
:D

2- :question:

Después, cuando entras en el bucle

Código: Text
  1.  
  2. do{
  3. printf(&#34;Introduzca los Apellidos: &#34;);
  4. gets(apellidos);
  5. printf(&#34;&#092;n&#34;);
  6. printf(&#34;Introduzca el Nombre: &#34;);
  7. gets(nombre);
  8. printf(&#34;&#092;n&#34;);
  9. printf(&#34;Introduzca el Numero de años: &#34;);
  10. scanf(&#34;%d&#34;,&numero_anyo);
  11.  
  12. strcpy(d.nombre, nombre);
  13. strcpy(d.apellidos, apellidos);
  14. d.numero_anyo = numero_anyo;
  15.  
  16.  
  17. fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);
  18.  
  19. }while(numero_anyo &#62;=3);
  20.  
  21.  

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
  1.  
  2. ...
  3. }while(!feof(fd));
  4. ...
  5.  
  6.  

en vez de

Código: Text
  1.  
  2. }while(!feof(ficbin));
  3.  
  4.  
.


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
  1.  
  2. car==' '
  3.  
  4.  

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 muchas gracias,acabo de verlo,y antes de probarlo,queria agradecerte, las molestias.Voy a probarlo, y ahora te digo,el resultado.
Saludos Mercedes

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Problemas Para Usar El While En C
« Respuesta #11 en: Viernes 28 de Mayo de 2004, 19:40 »
0
Cita de: "patitofeo"
Hola, vale ya entendí un poco más el problema.

 :hola:
He encontrado varios fallos:

1- :question:

 en esta condición:
Código: Text
  1.  
  2. ...
  3. while((car = fgetc(fp) != '&#092;n')) /*se lee del fichero texto*/
  4. {
  5. ...
  6.  
  7.  

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
  1.  
  2. ...
  3. while((car = fgetc(fp)) != '&#092;n') /*se lee del fichero texto*/
  4. {
  5. ...
  6.  
  7.  
:D

2- :question:

Después, cuando entras en el bucle

Código: Text
  1.  
  2. do{
  3. printf(&#34;Introduzca los Apellidos: &#34;);
  4. gets(apellidos);
  5. printf(&#34;&#092;n&#34;);
  6. printf(&#34;Introduzca el Nombre: &#34;);
  7. gets(nombre);
  8. printf(&#34;&#092;n&#34;);
  9. printf(&#34;Introduzca el Numero de años: &#34;);
  10. scanf(&#34;%d&#34;,&numero_anyo);
  11.  
  12. strcpy(d.nombre, nombre);
  13. strcpy(d.apellidos, apellidos);
  14. d.numero_anyo = numero_anyo;
  15.  
  16.  
  17. fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);
  18.  
  19. }while(numero_anyo &#62;=3);
  20.  
  21.  

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
  1.  
  2. ...
  3. }while(!feof(fd));
  4. ...
  5.  
  6.  

en vez de

Código: Text
  1.  
  2. }while(!feof(ficbin));
  3.  
  4.  
.


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
  1.  
  2. car==' '
  3.  
  4.  

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:
Gracias por tu ayuda,pero sigue sin salirme, veras ahora el codigo queda asi.

#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define TAMANYODNI 10

struct alumno
{

  char DNI[10];
  char nombre[25];
  char apellidos[50];
  int numero_anyo;
 
 };
 
 typedef struct alumno DATOSALUMNO;
 

 
main()
{

FILE *fp;
FILE *ficbin;
DATOSALUMNO d;
char car;
char dni[10];
int i;
char nombre[25];
char apellidos[50];
int numero_anyo;


if((fp=fopen("alumnos.txt", "r"))== NULL)
{
    printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura
   return -1;
}
   
if((ficbin =fopen("alumnos.bin", "wb"))== NULL)
{
    printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura
   return -1;
   
}


do {

 while((car = fgetc(fp)) != '\n')  /*se lee del fichero texto*/
  {    
      if(isspace (car) == 0) //si c es un espacio en blanco
      /*car == " ") si c es un espacio en blanco*/  
      {
     
   do{      
   for(i = 0; i<TAMANYODNI; i++)
         {
             dni = fgetc(fp);
            
         }
        strcpy(d.DNI, dni);  
         
         
      

            printf("Introduzca los Apellidos: ");
           gets(apellidos);
         fflush(stdin);
      
            printf("Introduzca el Nombre: ");
            gets(nombre);
         fflush(stdin);

            printf("Introduzca el Numero de años: ");
           scanf("%d",&numero_anyo);
              fflush(stdin);

/*        }while(numero_anyo>3);*/
    strcpy(d.nombre, nombre);
    strcpy(d.apellidos, apellidos);
    d.numero_anyo = numero_anyo;
   
       }while(numero_anyo > 3);
    fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);
   
   
    }//cierre del if
  } //cierre del while
   
}while(!feof(fp));

 
 fclose(ficbin);
 fclose(fp);
 
 return 0;
 
}

No toma la condición del while.En fin,sé que no me puedes hacer el código y lo comprendo,pero si me puedes dar alguna idea,te lo agradezco.Ahora no puedo seguir,porque tengo que hacer unas cosas.Mañana seguiré.Muchas gracisa

patitofeo

  • Miembro MUY activo
  • ***
  • Mensajes: 145
    • Ver Perfil
Re: Problemas Para Usar El While En C
« Respuesta #12 en: Miércoles 2 de Junio de 2004, 19:32 »
0
:hola:
Hola, siento no haberte respondido antes antes. No me conecto muy amenudo por que no tengo red en casa.

Creo que aprendiste mucho. usaste fflush para liberar los buffers de entrada y otros arreglos buenos.


                                     :scream:
bueno, como ya te dije yo no conozco la funcion 'isspace', pero deberias revisarla por que a mi no me funciona como debiera. en mi caso se evalua como cierta cuando lee el primer uno del texto y entonces guarda en el dni un espacio antes y falta el ultimo caracter. yo uso
Código: Text
  1.  
  2. if(car == ' ') //entre las comillas hay un espacio que logicamente no se ve
  3.  
  4.  

que como ya te dije funciona bien.

El otro dia se me debio pasar decirte que en el bucle:

Código: Text
  1.  
  2. do{
  3. ...
  4. }while(!feof(fp));
  5.  
  6.  

existe el problema de que si el fichero esta vacio, tu entraras en el bucle igualmente y te quedaras esperando infinitamente un espacio.

creo que es mejo que en vez de un do-while utilices un while a secas.

                                     :scream:

El echo de que no salga del bucle es casi seguro porque el editor que utilices para
crear el fichero alumnos.txt metera algun caracter entre el ultimo '\n' y el EOF. de esta forma al acabar, despues de leer el ultimo salto de linea intentara ver si a acabado el fichero y vera que no (por culpa de ese caracter) y quedara bloqueado esperando un espacio. ¿verdad?

a mi tambien me pasa. yo lo arregle añadiendo al

Código: Text
  1.  
  2. while((car = fgetc(fp)) != '&#092;n');
  3.  
  4.  

otra condicion que quedo asi.

Código: Text
  1.  
  2. while(((car = fgetc(fp)) != '&#092;n')&&(!feof(fp)))
  3.  
  4.  

pero no te recomiendo que hagas esto porque es una chapuza.

deberias reestructurar los bucles para que se evaluen correctamente y espere los caracteres adecuados. por ejemplo yo te recomendaria que irias llevando un conteo de las lineas que lees.

    :devil:

otra cosilla. Cuando se produce un error al introducir el numero de años y haces que se repita
Código: Text
  1.  
  2. }while(numero_anyo &#62; 3);
  3.  
  4.  
deberias sacar un mensaje de error para saber que debes introducir el mismo alumno correctamente ¿no? ¿o me estoy equivocando? solo es un consejo.

bueno. creo que no se me olvida nada esta vez.

espero haberme hecho entender y por supuesto haberte ayudado.

de todas formas si tienes alguna duda, escribe e intentare ayudarte cuanto antes

un saludo

 :suerte: