Tengo este programilla, que funciona perfectamente, solo que cuando abro el fichero creado me aparecen caracteres que yo no he introducido y que no tienen nada que ver. Creo que el problema está en las líneas en rojo, alguién podría ayudarme?
Código:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define APELLIDO 20
int menu();
void escribir();
void mostrar();
int main()
{
int op;
while(op = menu())
{
switch(op)
{
case 1:
escribir();
break;
case 2:
mostrar();
break;
}
}
}
int menu()
{
int op;
printf("\n 1.-Introducir apellidos.");
printf("\n 2.-Mostrar.");
printf("\n\t 0.-Salir.");
printf("\n\t\t Opcion?:");
scanf("%d",&op);
return op;
}
void escribir()
{
char apellido[APELLIDO];
char sn[1];
FILE * fd;
fd = fopen("alumnos.txt","a");
do{
printf("\n Introduzca apellido: ");
scanf("%s",apellido);
fwrite(apellido,sizeof(char[APELLIDO]),1,fd); printf("\n Otro apellido (s/n) ?");
scanf("%s",sn);
} while(sn[0]=='s' || sn[0]=='S');
fclose(fd);
}
void mostrar()
{
FILE * fd;
char apellido[APELLIDO];
fd = fopen("alumnos.txt","r");
while(fread(apellido,sizeof(apellido),1,fd)) {
printf("\n %s ",apellido);
}
fclose(fd);
}
Gracias por su atención, saludos.