Manejo de Ficheros en C: Modos de Apertura y Funciones Esenciales
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en
con un tamaño de 2,57 KB
Modos de Apertura de Ficheros en C
Para abrir un archivo en C, se utilizan los siguientes modos:
- "r": Lectura. El fichero debe existir; de lo contrario, dará error.
- "w": Escritura. Si existe, se pierde su contenido y se crea de nuevo. Si no existe, se crea.
- "a": Añadir. Si existe información en el fichero, se guarda al final. Si no existe, se crea.
- "r+": Lectura/escritura. El fichero debe existir.
- "w+": Escritura/lectura. Si el fichero no existe, se crea; si existe, se borra su contenido y se crea de nuevo.
- "a+": Lectura y añadir al final. Si no existe, se crea.
Adicionalmente, se puede añadir una b (binario) o una t (texto). La t se puede omitir, ya que es el valor por defecto.
Ejemplo de Apertura de Fichero
if ((archivo = fopen("datos.dat", "r")) == NULL)
{
printf("No puedo leer el fichero de datos");
exit(1);
}Lectura y Escritura de Estructuras
Para gestionar datos complejos, utilizamos las funciones fwrite y fread:
fwrite(&estruc, tamañoestruc, 1, punterofichero);fread(&estruct, tamañoestruc, 1, punterofichero);
Para determinar el tamaño de las tablas o estructuras, utilizaremos la función sizeof().
Posicionamiento en el Fichero: fseek()
La función int fseek(punterofichero, desplaz, modo); permite mover el puntero dentro del archivo:
- 0: Desde el principio del fichero (opción habitual).
- 1: Desde la posición actual del puntero.
- 2: Desde el final del fichero.
La función devuelve 0 si la operación se realiza correctamente y un valor distinto de 0 en caso de fallo.
Lectura y Escritura de Caracteres
- Escritura:
putc(carácter, puntero_fichero); - Lectura:
char getc(puntf);
Lectura y Escritura Formateada
Para operaciones más sofisticadas en archivos de texto, se utilizan fprintf() y fscanf(), cuya funcionalidad es similar a printf() y scanf():
fprintf(puntero_fichero, "formatos", var1, var2, ...);fscanf(puntero_fichero, "formatos", &var1, &var2, ...);