SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: i82maria en Sábado 15 de Mayo de 2004, 01:43
-
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.
-
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!!!!!