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.