Tema: Ficheros.
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/11/2006, 13:56
Avatar de yournightmare86
yournightmare86
 
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
Ficheros.

Hola buenas, trás mucho tiempo vuelvo al uso de ficheros en C(algo en lo que no soy precisamente un experto). Aquí les dejo mi código.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define RUTA "/home/madrid/C/registro_alumnos.txt"

//Prototipos de las funciones.

int menu();
void anyadir_alumno();
//void modificar_alumno();
//void visualizar();

typedef struct
{
int dia;
int mes;
int anyo;
}fecha;

typedef struct
{
char nombre[20];
char apellidos1[20];
char apellidos2[20];
fecha fecha_nac;
char nota_evaluacion[4];
char nota_final[4];
}alum;


main()
{
int i,op;

while((op = menu()) != 4)
{
switch(op)
{
case 1:
anyadir_alumno();
break;
case 2:
//modificar_alumno();
break;
case 3:
//visualizar();
break;
case 4:
return 0;
default:
printf("\n Opcion incorrecta. Seleccione otra opcion.\n");
}
}
return 0;
}

int menu()
{
int op,ok;

printf("\n 1) Anyadir alumno.");
printf("\n 2) Modificar alumno.");
printf("\n 3) Visualizar alumnos.");
printf("\n 4) Salir.");

do{
printf("\n\n Seleccione opcion: ");
ok=scanf("%d",&op);
} while(!ok);
return op;
}

void anyadir_alumno()
{
alum * alumno;
FILE * fd;
static int i=0;

i++;
fd = fopen(RUTA,"a");
if(fd == NULL) return;

printf("\n\n\t Datos del alumno numero %d",i);
printf("\n\t Nombre: "); scanf("%s",&alumno[i].nombre);
printf("\n\t Apellido 1: "); scanf("%s",&alumno[i].apellidos1);
printf("\n\t Apellido 2: "); scanf("%s",&alumno[i].apellidos2);
printf("\n\t\t Fecha: ");
printf("\n\t\t Dia: "); scanf("%d",&alumno[i].fecha_nac.dia);
printf("\n %d has introducido",alumno[i].fecha_nac.dia);

fwrite(alumno[i].nombre,1,strlen(alumno[i].nombre),fd);
fwrite("-",1,1,fd);
fwrite(alumno[i].apellidos1,1,strlen(alumno[i].apellidos1),fd);
fwrite("-",1,1,fd);
fwrite(alumno[i].apellidos2,1,strlen(alumno[i].apellidos2),fd);
fwrite("-",1,1,fd);
fwrite(alumno[i].fecha_nac.dia,1,sizeof(alumno[i].fecha_nac.dia),fd);
fwrite("-",1,1,fd);
fclose(fd);
}

De momento estoy con la primera función, la de añadir un nuevo registro(por eso he hecho comentarios las llamadas a las demás funciones). Cuando intento guardar en el fichero la variable día, me da error en la línea que marqué en rojo, y no se porqué. Alguna sugerencia?Debería usar fprintf en vez de fwrite?
Gracias por su paciencia y ayuda.
Saludos.