| Ejemplos de C - Creación de ficheros secuenciales |
1.- Programa que crea un fichero con los datos de profesores:
#include<stdio.h>
#include<string.h>
FILE *fprofes;
struct profesores
{
long int dni[10];
char nom[30];
char dir[30];
long int des[5];
char cat;
char titul;
long int fecha[6];
};
void main()
{
struct profesores rprofes;
fprofes=fopen ("a:\\ficheros\\fprofes.d","wb");
if (fprofes==NULL)
{
puts("Error de apertura del fichero fprofes\n");
goto fin;
}
puts("Teclea DNI\n");
scanf("%ld",&rprofes.dni);
while (*rprofes.dni!=0)
{
puts("Teclea nombre\n");
fflush(stdin);
gets(rprofes.nom);
puts("Teclea direcion\n");
fflush(stdin);
gets(rprofes.dir);
puts("Teclea destino\n");
scanf("%ld",&rprofes.des);
do
{
puts("Teclea categoria (p,s,u)\n");
fflush(stdin);
rprofes.cat=getchar();
}while (rprofes.cat!='p' && rprofes.cat !='P' && rprofes.cat!='s'
&& rprofes.cat!='S' && rprofes.cat!='u' && rprofes.cat
!='U');
do
{
puts("Teclea titulacion (m,s)\n");
fflush(stdin);
rprofes.titul=getchar();
}while (rprofes.titul!='m' && rprofes.titul!='M' && rprofes.titul!='s'
&& rprofes.titul!='S');
puts("Teclea fecha de ingreso\n");
fflush(stdin);
scanf("%ld",&rprofes.fecha);
fwrite((char*)&rprofes,sizeof(rprofes),1,fprofes);
puts("Teclea DNI\n");
fflush(stdin);
scanf("%ld",&rprofes.dni);
}
fclose(fprofes);
fin: puts("Final del programa \n");
}
2.- Programa que crea un fichero con los datos de los libros de una biblioteca:
#include<stdio.h>
#include<string.h>
FILE *flibros;
struct strlibros
{
int codigo[4];
char titulo[30];
char autor[30];
char editorial[30];
int ejem[2];
};
void main()
{
struct strlibros rlibros;
flibros=fopen("a:\\ficheros\\flibros.d","wb");
if (flibros==NULL)
{
puts("Error de apertura en el fichero flibros\n");
goto fin;
}
puts("Teclea codigo del libro (0 para terminar)\n");
scanf("%d",&rlibros.codigo);
while (*rlibros.codigo!=0)
{
puts("Teclea titulo\n");
fflush(stdin);
gets(rlibros.titulo);
puts("Teclea autor\n");
fflush(stdin);
gets(rlibros.autor);
puts("Teclea editorial\n");
fflush(stdin);
gets(rlibros.editorial);
puts("Teclea numero de ejemplares\n");
scanf("%d",&rlibros.ejem);
fwrite((char*)&rlibros,sizeof(rlibros),1,flibros);
puts("Teclea codigo del libro (0 para terminar)\n");
scanf("%d",&rlibros.codigo);
}
fclose(flibros);
fin:puts("Final del programa\n");
}
3.- Programa que crea un fichero con los datos de las ventas realizadas por vendedores:
#include<stdio.h>
#include<string.h>
struct strventas
{
int codigo;
long int fecha;
char tipoart;
int cantidad;
};
void main()
{
FILE *fventas;
struct strventas rventas;
fventas=fopen("a:\\ficheros\\fventas.d","wb");
if (fventas==NULL)
{
puts("\nError de apertura del fichero fventas");
goto fin;
}
puts("\nTeclea codigo de vendedor (0 para terminar)");
scanf("%d",&rventas.codigo);
while(rventas.codigo!=0)
{
puts("\nTeclea fecha operacion");
scanf("%ld",&rventas.fecha);
puts("\nTeclea tipo de articulo");
fflush(stdin);
rventas.tipoart=getchar();
puts("\nTeclea cantidad vendida");
scanf("%d",&rventas.cantidad);
fwrite((char*)&rventas,sizeof(rventas),1,fventas);
puts("\nTeclea codigo de vendedor");
scanf("%d",&rventas.codigo);
}
fclose(fventas);
fin: puts("\nFin del programa");
}
4.- Programa que crea un nuevo fichero que recoge los datos del fichero del ejercicio 2:
#include<stdio.h>
#include<string.h>
FILE *fanaya;
FILE *flibros;
struct strlibros
{
int codigo;
char titulo[30];
char autor[30];
char editorial[30];
int ejem;
};
struct stranaya
{
int codigo;
char titulo[30];
char autor[30];
char editorial[30];
int ejem;
};
void main()
{
struct strlibros rlibros;
struct stranaya ranaya;
if ((flibros=fopen("a:\\ficheros\\flibros.d","rb"))==NULL)
{
puts("\nError de apertura en flibros");
goto fin;
}
if ((fanaya=fopen("a:\\ficheros\\fanaya.d","wb"))==NULL)
{
puts("\nError de apertura en fanaya");
goto fin;
}
fread((char*)&rlibros,sizeof(rlibros),1,flibros);
while(!feof(flibros))
{
if(rlibros.editorial=='a')
{
rlibros.codigo=ranaya.codigo;
strcpy(rlibros.titulo,ranaya.titulo);
strcpy(rlibros.autor,ranaya.autor);
fwrite((char*)&ranaya,sizeof(ranaya),1,fanaya);
}
fread((char*)&rlibros,sizeof(rlibros),1,flibros);
}
fclose(flibros);
fclose(fanaya);
fin:puts("\nFin del programa");
}