• Viernes 17 de Mayo de 2024, 04:47

Autor Tema:  Ayuda Por Favor!!!!  (Leído 849 veces)

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Ayuda Por Favor!!!!
« en: Sábado 15 de Mayo de 2004, 01:43 »
0
Por favor, si alguien me puede ayudar, que lea mis peticiones de antes. Y me conteste a mi correo. Necesito pasar de un fichero texto, en el se almacena un numero identificador, y el dni, de una serie de alumnos. Tengo que recoger el DNI, de ese fichero texto, y crear un fichero binario a partir del fichero texto, cogiendo el DNI del fichero texto, y pasandolo al binario. Pero no sé como hacerlo.
El fichero texto tiene este aspecto.
1 30458985
2 25698896




Es decir, se me ha ocurrido una cosa asi:

FILE *fp;
FILE *ficbin;
DATOSALUMNO d;
char car;
char dni[10];
int i;

if((fp=fopen("alumnos.txt", "r"))== NULL)
{
    printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura
   exit(1);
}
   
if((ficbin =fopen("alumnos.bin", "wb"))== NULL)
{
    printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura
   exit (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<10; i++)
         {
             car = fgetc(fp);
   
         
         }
         
     strcat(dni, car);
       /*PERO AQUI EL COMPILADOR ME DA UN ERROR, PORQUE NO ME DEJA*/
/*CONCATENAR UNA CADENA DNI, CON UN CARACTER*/
/*YO LO QUE PRETENDO ES LEER EL DNI,DEL FICHERO TEXTO,Y ALMACENARLO
EN UNA VARIABLE,PARA EL FICHERO BINARIO*/
           
        fwrite(&dni, sizeof(char), 1, ficbin);
         
     
       printf("Introduzca los apellidos: ");
        gets(d.apellidos);
        printf("Introduzca el nombre: ");
        gets(d.nombre);
        printf("Introduzca el numero de años: ");
        scanf("%d",&d.numero_anyo);
     }
    }/*cierre del while*/
   
}while(!feof(ficbin));

 
 fclose(ficbin);
 fclose(fp);
 
}



Por favor si alguien me ayuda a encontrar el error, o la manera de que me funcione.

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Ayuda Por Favor!!!!
« Respuesta #1 en: Sábado 15 de Mayo de 2004, 14:18 »
0
Hola!!!!!!

Mira no entiendo algo:
1º) A DNI solo lo declaraste pero nunca lo instanciaste
2º) Cuando lees del archivo y preguntas si estas en un espacio le asignas a una variable Car q no se q es, pero asumo q es una auxiliar, un caracter 10 veces, pero ese caracter lo vas perdiendo en la siguiente asignacion, o sea, vos haces esto:
car = 1;
car = 3;
car = 5;

y si miras eso te das cuenta q para q asignas 1,3 y 5 si solo te queda "vivo" el 5??

Lo otro es q el strcat es para concatenar cadenas, a mi me parece q lo q vos queres hacer es leer de aun caracter y asignarselo a DNI y a medida q seguis leyendo se lo queres concatenar a DNI o algo asi, pero me parece q seria mas piola si tu variable Car es directamente DNI y reemplazaria esto:
for(i = 0; i<10; i++)
  car = fgetc(fp);

por esto:
for(i = 0; i < TAMANIODNI, i++)
  DNI = fgetc(fp);

y LISTO

No se, fijate

Salu2!!!!!