FILE *fopen(char *, char*);
"r" Lectura (read).
"w" Escritura (write).
"a" Apédice (append).
- Puntero a la estructura del fichero, que debe asignarse a una variable de este tipo para poder acceder al fichero a través de dicha variable.
- NULL si se ha producido un error al intentar abrir el fichero. Un error muy común consiste en intentar abrir en modo de lectura un fichero que no existe en la ruta de acceso indicada mediante el primer parámetro de la función.
int fclose(FILE *);
- NULL si la operación de cierre se ha realizado satisfactoriamente.
- EOF si se ha producido un error al intentar cerrar el fichero.
int getc(FILE *);
int putc(int, FILE *);
#define getchar() getc(stdin)
#define putchar(c) putc((c), stdout)
#include <stdio.h>
int main() {
FILE *in;
int ch;
if ((in = fopen("TEST.TXT", "r")) != NULL) {
while ((ch = getc(in)) != EOF)
putc(ch, stdout); /* equivale a putchar(ch); */
fclose(in);
}
else
puts("No se puede abrir \"test\".");
putchar('\n');
system("pause");
return 0;
}
- Puntero a la estructura FILE del fichero.
- Desplazamiento (offset) desde el punto de referencia. Podrá ser positivo o negativo.
- Modo que indica el punto de referencia.
int fseek(FILE *, long, int);
Modo
Número
Origen del desplazamiento
SEEK_SET
0
Comienzo del fichero.
SEEK_CUR
1
Posición actual.
SEEK_END
2
Fin del fichero.
- Si no se han producido errores 0.
- En caso de error -1. Un eror muy común consiste en intentar avanzar más allá de los límites del fichero.
#include <stdio.h>
#include <stdlib.h>
int main() { /* imprime un fichero de texto al revés */
FILE *fp;
long despl = 0L; /* cero "largo" */
char ch;
if ((fp = fopen("texto.txt", "r")) == NULL) {
puts("El fichero no puede abrirse.");
exit(1); /* aborta el programa con un código de error */
}
fseek(fp, --despl, SEEK_END);
/* sitúa el puntero justo antes del fin de fichero (EOF) */
while ((ch = getc(fp)) != EOF) {
putchar(ch);
fseek(fp, --despl, SEEK_END);
/* mueve el puntero un byte hacia atrás */
}
fclose(fp); /* los ficheros siempre deben cerrarse */
return 0;
}
fread(void *, unsigned, unsigned, FILE *);
fwrite(void *, unsigned, unsigned, FILE *);
#include <stdio.h
#include <stdlib.h>
int main() {
int i, j;
int matrizsal[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}},
matrizent[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};
FILE *fich;
if ((fich = fopen("matriz.bin", "w")) == NULL) {
puts("Error en apertura del fichero.\n");
exit(1);
}
fwrite((void *) matrizsal, sizeof(int), 9, fich);
fclose(fich);
if ((fich = fopen("matriz.bin", "r")) == NULL) {
puts("Error en apertura del fichero.\n");
exit(2);
}
fread((void *) matrizent, sizeof(int), 9, fich);
fclose(fich);
printf("Elementos de la matriz recuperada del fichero.\n\n");
for (i = 0; i < 3; i++) {
printf(" [");
for (j = 0; j < 3; j++)
printf("%d ", matrizent[i][j]);
printf("\b]\n");
}
putchar('\n');
system("pause");
return 0;
}
int feof(FILE *);
void rewind(FILE *);