• Domingo 5 de Mayo de 2024, 01:44

Autor Tema:  Ayuda Para Completar El Codigo  (Leído 800 veces)

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Ayuda Para Completar El Codigo
« en: Domingo 16 de Mayo de 2004, 22:46 »
0
#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);
 
}


El codigo es este, me compila, pero no me hace lo que quiero. Quiero que me pide por teclado los datos, del alumno, y los meta en un fichero binario. La condicion de salida del do-while,es q el numero de años introducido,cuando sea menor de 3 se salga. Eso es lo que pretendo,pero no lo consigo.
Si alguien me puede ayudar, que vea este codigo, y me escriba a mi correo.
Gracias, ruego me contesten lo antes posible  :hola:

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Ayuda Para Completar El Codigo
« Respuesta #1 en: Lunes 17 de Mayo de 2004, 02:29 »
0
Hola Mercedes!!

Hace esto:

for(i = 0; i<TAMANYODNI; i++)
  dni = fgetc(fp);

strcpy(d.DNI, dni);

printf("Introduzca los apellidos: ");
gets(apellidos);
printf("Introduzca el nombre: ");
gets(nombre);
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);

Y listo!!!!!!

Salu2!!!!!!!!!!