ficheros en c (archivos)


FICHEROS. En lugar de hacer la entrada vía teclado y la salida vía terminal, se puede hacer usando ficheros. Para trabajar con ficheros debe seguirse la secuencia siguiente:
1.- Abrir el archivo.
2.- Utilizar el archivo lectura, escritura, ...
3.- Cerrar el archivo. Para trabajar con ficheros se deberá incluir la línea:
#includeAntes de utilizar un fichero, éste debe haber sidodeclarado.
Para ello: FILE * nombre;       /declarar un fichero*/(*) Relacionado con punteros (punto 6). Corresponde a un puntero a un archivo  
APERTURA DE UN FICHERO: FOPEN ( );. Fopen trabaja básicamente con 2 parámetros de entrada:El nombre del fichero que se va a escribir.El uso a que se va a destinar el fichero:
r          Lectura.
w         Escritura. (si en el fichero existe algún dato se BORRARÁ)
a          Añadir  Ejemplos:#include>stdio.h>FILE * datosdatos = fopen (“nombres.dat”,”r”);
Nombre del archivo en el programa. Utilizado por el programa    
Nombre que tiene el archivo en el disco. Utilizado por el sistema operativo
 Otras formas de abrir el archivo:datos = fopen (“nombres.dat”, “w”);
datos = fopen (“nombres.dat”, “a”);
datos = fopen (“nombres.dat”, “ra”); 
Si fopen ( ) no consigue abrir el fichero solicitado, devuelve un valor nulo que se ha definido en stdio.h con el nombre NULL.
¿Por qué no se puede abrir un fichero?.
Por ejemplo, si no existe. Como posteriormente se verá, se suele realizar algún control al abrir el fichero: 
if (datos = fopen (“nombres.dat”,”r”) !=NULL) 
Otros posibles errores por los que no se puede abrir un fichero:Disco lleno.Nombre incorrecto.Directorio no válido.Etc.  
CIERRE DE UN FICHERO: FCLOSE ( );. Se puede cerrar el fichero con fclose ( ).
Para nuestro ejemplo: fclose (datos);
Para realizar un programa más preciso, con control de errores, se puede utilizar el valor que retorna fclose ( ) para informar si el fichero se ha cerrado normalmente:cierre satisfactorio.
-1        error al cerrar el fichero. Con un if podríamos controlar si el cierre es satisfactorio o no.  
ENTRADA Y SALIDA DE FICHEROS: GETC ( ); Y PUTC ( );.  
Las funciones getc ( ) y putc ( ) se comportan de forma semejante a getchar ( ) y putchar ( ).Con getc ( ) y putc ( ) se debe indicar el nombre del fichero.
Ejemplo: leer un carácter del archivo nombres.dat. 
#include
char letra;
FILE *datos;datos = fopen (“nombres.dat”,”r”);
letra = getc (datos);fclose (datos); 
Ejemplo: escritura de la letra “X” en el archivo nombres.dat. 
#include
char letra = ‘X’;FILE *datos;
datos = fopen (“nombres.dat”,”w”);
putc (letra,datos);
fclose (datos); 
ENTRADA Y SALIDA DE LINEAS: FPRINTF ( ); Y FSCANF ( );.
Se comportan exactamente igual que printf ( ); y scanf ( );, excepto que requieren un argumento adicional que corresponde al fichero deseado.La sintaxis es:
 fprintf (fichero, control, arg1, arg2, ...);
fscanf (fichero, control, arg1, arg2, ...); 
Ejemplo: 
 #includeFILE *fich;Int edad; 
 
Fich = fopen (“pedro”,”r”);
Fscanf (fich, “%d”,&edad);
Fclose(fich);
/*modo lectura*//*lectura del fichero*/
 
Fich = fopen (“datos”,”a”);
Fprintf (fich, “Pedro tiene %d años.\n”edad);
Fclose (fich);
/*modo añadir*//*escribir en fichero*/
 3.7.- ENTRADA Y SALIDA DE ENTEROS DE 2 BYTES: GETW ( ); Y PUTW ( );. 
Estas funciones son soportadas por la mayoría de los compiladores.Se utilizan para leer y escribir enteros de 2 bytes en o desde fichero en disco.Funcionan de manera similar que getc ( ) y putc ( ).
Ejemplo:Sean las declaraciones:FILE * fp;
int cuenta; Se puede hacer:cuenta = getw (fp);
 /*lectura del fichero*/ 
putw (cuenta,fp);
/*escritura en el fichero*/ 
ACCESO ALEATORIO: FSEEK ( );. 
La función fseek ( );
permite moverse a un byte determinado del fichero abierto por fopen ( );.
La sintaxis es: fseek (fichero, offset, modo);
Indica el fichero sobre el que se aplica el movimiento.     El offset se mide desde: 0: el comienzo del fichero1: posición actual2: fin de fichero
       
      
Indica la cantidad de bytes a desplazar.Puede utilizarse el nombre de una variable definida como long.Pueden ser: Positivo (movimiento adelante)Negativo (movimiento atrás)
fseek ( );
devuelve un valor para que el programa pueda controlar el correcto funcionamiento. Este valor puede ser:0: Todo ha funcionado correctamente-1: En otro caso.
Ejemplo:       
Para posicionarse al comienzo del fichero: 
fseek (fich, 0L, 0); 
Para posicionarse al final del fichero:fseek (fich, 0L, 2); 
Para posicionarse en otro punto.
Ejemplo byte 210.fseek (fich, 210L, 0); 
Utilizando una variable.long vari = 210L;fseek (fich, vari, 0); 
Se puede utilizar autoincrementando o autodecrementando:fseek (fich, vari++, 0);fseek (fich, vari- -, 0);
 FICHEROS: STDIN, STDOUT, STDERR. Al comenzar la ejecución de un programa se abren 3 archivos automáticamente.
Estos son: stdin: corresponde a la entrada estándar          ® 
TECLADO.stdout:            corresponde con la salida estándar.       ®
PANTALLA.Stderr:            corresponden con el error estándar         ®
PANTALLA.                      Estos nombres se pueden utilizar para hacer E/S por el teclado / pantalla.Al iniciarse el programa estos ficheros se cierran automáticamente.

No response to “ficheros en c (archivos)”