Buenas!
Espero que me puedan ayudar. Tengo un problema con un ejercicio, que tengo que hacer para la universidad.
en el ejercicio lo que me mandan:
es que de un fichero de tipo binario con el nombre, dni, y las notas de muchos alumnos. Y un fichero texto con el dni un espacio y las nota de cada uno de los alumnos los cuales, se pueden haber presentado o no.
yo lo he intentado pero tengo el problema de que al comparar dni's nunca me dicen que esten igual ( Utilizo la funcion strcmp).
y otro problema que tengo es que la nota en el archivo de notas me aparece como un 'char' y lo necesito pasar a float.
os pongo el codigo para que podais decirme el fallo:
Código:
#include<stdio.h>
#include<string.h>
typedef struct
{
char nombre[40];
char dni[12];
float notas[5];
} Alumno;
void main (void)
{
FILE *pf1;
FILE *pf2;
FILE *pf3;
Alumno alumno;
Alumno final;
char notas1[12];
char dni1[12];
int i;
char asignatura[2];
i=0;
if((pf1=fopen("alumnos.dat","rb"))&&(pf2=fopen("notas1.txt","rt"))&&(pf3=fopen("final.dat","wb")))
{
fgets(asignatura,3,pf2);
fread(&alumno,sizeof(alumno),1,pf1);
fgets(dni1,13,pf2);
while((!feof(pf1))&&(!feof(pf2)))
{
while(dni1[i]!=' ')
{
notas1[i]=dni1[i];
i++;
}
if((strcmp(alumno.dni,notas1)==0))
{
strcpy(final.nombre,alumno.nombre);
strcpy(final.dni,alumno.dni);
alumno.notas[0]=final.notas[0];
fwrite(&final,sizeof(final),1,pf3);
fread(&alumno,sizeof(alumno),1,pf1);
fgets(dni1,15,pf2);
}
else
{
fgets(dni1,15,pf2);
i=0;
}
}
}
else
{
fprintf(stdout,"\n ERROR EN LA APERTURA \n");
}
fclose(pf1);
fclose(pf2);
fclose(pf3);
}
PD: lo de las notas todavia no lo se asique no esta metio en el codigo