Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problemas con ficheros

Estas en el tema de Problemas con ficheros en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 11/03/2008, 11:58
 
Fecha de Ingreso: marzo-2008
Mensajes: 1
Antigüedad: 16 años, 1 mes
Puntos: 0
Problemas con ficheros

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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:37.