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:
PD: lo de las notas todavia no lo se asique no esta metio en el codigo #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); }