Hola, tengo un problema con el bucle do-while en C, quisiera que si alguien puede mirar el siguiente codigo, me diga si sabe donde está el error, porque no me funciona la condición de salida del bucle.
#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);
}
Mi intención es que el bucle se salga cuando el numero_anyo sea menor de 3, y lo escriba en el fichero binario.Puesto que como minimo el alumno debe estar tres años en la carrera ya que es una carrera de tres años.
Bueno, pues eso,si alguien es tan amable de echarme una manilla, por favor, que responda. Muchas gracias. Saludos desde Andalucia