• Domingo 19 de Mayo de 2024, 07:07

Autor Tema:  Uso De Un Bucle Do -while En C  (Leído 832 veces)

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Uso De Un Bucle Do -while En C
« en: Domingo 23 de Mayo de 2004, 14:51 »
0
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

patitofeo

  • Miembro MUY activo
  • ***
  • Mensajes: 145
    • Ver Perfil
Re: Uso De Un Bucle Do -while En C
« Respuesta #1 en: Lunes 24 de Mayo de 2004, 18:02 »
0
Si quieres que el bucle termine cuando la variable numero_anyo es mayor que tres

debes poner:

Código: Text
  1.  
  2. .....
  3. }while(numero_anyo&#60;=3);
  4.  
  5.  

de forma que el bucle se siga ejecutando mientras (while en ingles) la condición
  --- numero_anyo<=3 ---  se cumpla. la variable sea menor o igual de 3.

no se si habrá más fallos pero el codigo tampoco esta entero ¿no?

bueno espero haberte ayudado.


Un saludo desde cantabria :hola: