Anterior | Home | Siguiente |
En algún momento se vieron rutinas de entrada estandar como scanf(), gets(), getchar(), y de salida como printf(), puts(), o putchar(). Toca ahora ver rutinas de entrada salida estandar que trabajen con archivos.
Una archivo es un conjunto de datos almacenados en la memoria secundaria, normalmente con alguna estructura.
DATOS.TXT | |||
Nombre | RUT | Año | |
Juan | 2871775-0 | 93 | <== fila o registro |
Pedro | 12345678-K | 98 | |
campo |
Si el archivo sólo tiene texto ==> un solo campo
Para poder guardar o recuperar información desde o hacia un archivo, lo primero que se debe hacer es declarar un puntero que señale a hacia el.
Nota: todo archivo se acede en forma secuencial, y en un comienzo el puntero apunta a la dirección donde comienza el archivo.
aquí comienza el archivo | aquí termina el archivo | ||||||||||||
Contenido: | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | |
Dirección de memoria: | 2556 | 2557 | 2558 | 2559 | 2560 | 2561 | 2562 | 2563 | 2564 | 2565 | 2566 | 2567 |
Para declarar un puntero se utiliza la siguiente sentencia:
FILE *nombre_puntero;
El nombre del archivo, no es lo que lo identifica, sino el puntero que apunta a la dirección donde comienza el archivo.
Teniendo un puntero previamente declarado, en C para abrir un archivo se utiliza la siguiente sentencia:
fopen(nombre_puntero,"tipo_apertura");
La apertura de un archivo puede ser de básicamente de tres tipos:
Los tipos de apertura básicos y algunas variaciones especifican como sigue:
puntero=fopen("nombre", "r"); /* la r es de read, leer */
Se abre para lectura solamente. Si el archivo no existe, se genera un error.
puntero=fopen("nombre","w"); / *la w es de write, escribir */
Se abre para escritura. Si el archivo no existe, es creado, pero si existe, se destruye para crearlo de nuevo.
fopen("nombre","a"); /* la a es de add, agregar */
Se abre para añadir datos al final. Si el archivo no existe, es creado.
fopen("nombre","r+");
Se abre para lectura y escritura. Si el archivo no existe, se genera un error.
fopen("nombre","w+");
Se abre para lectura y escritura. Si el archivo no existe, es creado, pero si existe, se destruye para crearlo de nuevo.
fopen("nombre","a");
Se abre para leer y añadir datos al final. Si el archivo no existe, es creado.
Una vez que el archivo se ha dejado de utilizar, es bueno cerrarlo, pues el compilador admite un numero limitado de archivos abiertos. Para cerrar un archivo se utiliza la siguiente sentencia.
fclose(puntero);
En general para detectar si se ha producido un error en la manipulación de un archivo se utiliza la función
ferror(puntero);
esta función devuelve un valor distisnto de cero si se ha cometido algún error, y devuelve un cero en caso contrario.
El intercambio de información con la computadora puede hacerse básicamente de dos diferentes:
para leer caracter por caracter desde un archivo se utiliza la función
getc(puntero);
La cual devuelve un entero, y por lo tanto suponiendo que hemos declarado una variable letra como caracter, se puede utilizar de la siguiente manera:
letra=getc(puntero);
La lectura con formato se realiza de la siguiente en forma similar a la que se realiza desde teclado. Para esto utilizamos la función
fscanf(puntero,"formato",variable);
Para escribir en un archivo se utilizan funciones análogas a las antes vistas:
Escritura caracter por caracter
fputc(variable,puntero);
Escritura con formato
fprintf(puntero,"formato",variable);
Hay otros métodos de leer y escribir desde y hacia un archivo, como por ejemplo por bloques, pero ello requiere de un conocimiento previo de las estructuras.
Rebobinar un archivo significa, llevar el puntero que se esta utilizando para recorrerlo (a medida que se va leyendo un archivo el puntero que inicialmente apuntaba al comienzo del archivo, avanza) al comienzo del archivo desde donde partió. Para ello se utiliza la función
rewind(puntero);
Supongamos que se tiene un archivo con una estructura como la siguiente:
FILA.TXT | |||||||
Nombre | RUT | Año | |||||
Juan | 2871775-0 | 93 |
Pedro | 12345678-K | 98 |
| |
Si quiero modificar el RUT de Pedro, tendremos se requiere abrir un archivo temporal, por ej. FILA.TMP y seguimos los siguientes pasos:
Para borrar se pueden usar comandos de DOS, via la función system(comando_DOS), por ejemplo:
system(del DATOS.TMP);
Anterior | Home | Siguiente |
© 2000 Made in Bufoland