Existe un nÚmero muy grande de funciones para el manejo de archivos, entre las mÁs importantes estan:
Operaciones sobre los streams estándar:
printf()
escribe una línea de texto en stdout;
putchar()
escribe un caracter en stdout;
puts()
escribe un arreglo caracteres en stdout;
scanf()
lee una línea de texto de stdin;
getchar()
lee un caracter de stdin;
gets()
lee un arreglo caracteres de stdin.
Operaciones sobre streams definidos por usuario:
fscanf()
escribe línea texto en stream;
fputc()
escribe un caracter en strem;
fputs()
escribe un arreglo caracteres en stream;
fscanf()
lee una línea de texto de stream;
fgetc()
lee un caracter de stream;
fgets()
lee un arreglo caracteres de stream;
fread()
lee n bytes, en binario, del stream;
fwrite()
escribe n bytes, en binario, al stream;
fseek()
posiciona un apuntador en una posición del archivo;
ftell()
obtienen la posición del apuntador en un archivo;
feof()
prueba si se esta apuntando al indicador de fin archivo;
fclose()
cierra el archivo apuntado por el stream;
ferror()
prueba el indicador de error, 0 si no hubo error.
Ejemplo uso fgets(), fputs(), gets() y puts
Las sintaxis son:
1. char *fgets(char *s, int n, FILE *stream)
2. int fputs(char *s, FILE *stream)
3. char *gets(char *s)
4. int puts(char *s)
Nota: Una línea esta compuesta de caracteres hasta que aparece el caracter de cambio de línea LF: '\n'. Como dato curioso fgets() transmite caracter '\n' mientras que gets lo elimina. Por otra parte, puts lo regenera mientras que fputs no hace nada.
Ejemplo de uso:
char ligne[128];
FILE *in, *out;
while(gets(ligne) !=NULL)
puts(ligne);
in = fopen(''fuente'', ''rb'');
out = fopen(''destino'', ''wb'');
while(fgets(ligne, 128, in) !=NULL)
fputs(ligne, out);
Uso del fscanf(), fprintf() y fclose()
Sintaxis:
1. int fprintf(FILE * stream)
2. int fscanf(char *format ...)
3. int fclose(FILE *stream)
4. int ferror(FILE *stream)
Ejemplo de uso:
while ((n=fscanf(flux,''%g'',%note[i]) ==1)
{
...
}
if (n != EOF) {
int code;
/* Se produjo un error en la lectura */
code=ferror(flux);
fprintf(stderr, ''Error %d lectura archivo: /users/notes'', code);
fclose(flux);
exit(1);
}
Uso del feof()
1. int feof(FILE *stream)
Ejemplo de uso:
while (fscanf(flux,''%g'',¬e[i])
==1) {
...
}
if ( !feof(flux) ) /* error en la lectura */
{
int code;
code=ferror(flux);
fprintf(stderr, ''Error
%d lectura archivo:/users/notes'', code);
fclose(flux);
exit(1);
}
Uso del fread() y fwrite()
1. size_t fread(void *ptr, size_t size,
sizer_t nmemb, FILE
*stream)
2. size_t fwrite(void *ptr, size_t size,
size_t nmemb, FILE
*stream)
Ejemplo de uso:
int i,tab[1000];
struct datos{
int edad;
char nombre[10];
char apellido[15];
};
FILE *flux;
struct datos empleado; ...
flux=fopen(''...'',''r'');
i=fwrite(%empleado, sizeof(struct datos),
1, flux);
/*un elemento tamaño sizeof(struct
datos) es escrito en el stream flux*/
i=fwrite(tab, sizeof(int), 1000, flux);
/*1000 elementos tamaño sizeof(int)
son escritos en el stream flux*/
}
se lee un elemento de tamaño sizeof(struct datos) del stream flux y la información
while ( !feof(flux) ) {
fread(&empleado, sizeof(datos), 1, flux);
...
}
Uso de ftell() y fseek()
1. int fseek(FILE *stream, long int offser,, int whence)
SEEK CUR: valor actual indicador posici'on archivo;
SEEK SET: principio del archivo;
SEEK END: fin de archvio;
2. int ftell(FILE *stream)
Ejemplo uso:
impresi
char nombre[20], direc[60];
int pos;
FILE *base = fopen(''datitos'',''w+'');
for( i=0; ;i+=80)
{
fseek(base, i, SEEK SET);
pos = ftell(base);
fread(nombre, 20, 1, base);
fread(direc, 60, 1, base);
printf(''Nombre:%s, direc:%s, pos. archivo:%d \n'',nombre,direc,pos);
if(feof(base) )
break;
}
|
|
|