El puntero a un archivo.

Anuncio
E.P.E.T Nº 3
Técnico en Informática Profesional y Personal
Espacio: PROGRAMACION I .
Curso: 5º Año Turno Mañana.
Profesor: Guillermo C. Pérez.
ARCHIVOS EN LENGUAJE “C”
C es uno de los lenguajes de programación más amplios y extensos que existen en la
actualidad; por ello, el manejo de archivos o manipulación de estos no es una tarea tan difícil
que digamos.
Al hablar de manejo de archivos en programación C nos referimos no al común almacenamiento
en memoria (como normalmente se realiza con variables globales en C) sino a un
almacenamiento en cualquier archivo ubicado en nuestro disco rígido, que en la mayoría de los
casos es nuestro disco duro.
La entrada y salida (E/S) de datos es una de las características más habitualmente utilizadas en
cualquier lenguaje programación para el manejo de datos.
Para poder manejar archivos en C es oportuno utilizar un puntero predefinido por nosotros
dirigido a una estructura FILE que es un tipo de dato específico definido en la librería < stdio.h >.
El puntero a un archivo.
• El puntero a un archivo es un tipo especial que opera como hilo común que unifica el sistema
de E/S con buffer. Un puntero a un archivo es un apuntador a una información que define
varias cosas sobre él, incluyendo el nombre, el estado y la posición actual del archivo. En
esencia identifica un archivo especifico y utiliza la secuencia asociada para dirigir el
funcionamiento de las funciones de E/S con buffer.
El puntero a un archivo es una variable de tipo puntero al tipo FILE que se define en "stdio.h".
Un programa necesita utilizar punteros a archivos para leer o escribir en los mismos. Para
obtener una variable de este tipo se utiliza una secuencia como esta:
FILE *F;
Apertura de un archivo
• La función fopen() abre el archivo.
La sintaxis básica es:
FILE *nombre;
nombre = facción_a_realizar ( " nombredelarchivo.doc " , " modo " ) ;
Nótese que para una acción específica, ha de anteponérsele a la misma una f (proveniente
de file, que es archivo en español);
Un ejemplo básico: FILE *fp;
fp = fopen ( " documento.txt " , " r " ); Allí abriremos el fichero documento.txt. para lectura
Existen diversos modos para manipular archivos:
- r : Sólo abre un fichero para su lectura.
- w : Si el fichero no existe, lo crea. Si existe, lo borra y añade uno nuevo.
- a : El fichero debe (ó no) existir. Lo abre para añadir información al final.
- r+ : El fichero ya existe y lo abre para actualizarlo.
- w+ : Crea un nuevo fichero para actualizarlo y si existe, sobreescribe en él.
- a+ : Abre un fichero para añadir información al final. Si no existe, lo crea.
Funciones en archivos
fopen() Abre un archivo
fclose() Cierra un archivo
fgets() Lee una cadena de un archivo
fputs() Escribe una cadena de un archivo
fseek() Busca un byte especifico de un archivo
fprintf() Escribe una salida con formato en el archivo
fscanf() Lee una entrada con un formato en el archivo
feof() Devuelve cierto si se llega al final del archivo
ferror() Devuelve cierto si se produce un error
rewind() Coloca el cursor de posición en el archivo al principio del mismo
remove() Borra un archivo
fflush() Vacía un archivo
fread() Lee un bloque de una “stream” de datos (binario)
fwrite() Escribe un bloque de datos a un archivo como “stream” (binario)
Ejemplos
Para grabar una cadena de texto en un archivo.
#include <stdio.h>
FILE *puntero;
int main(){
char cadena[] = "Nuevo texto dentro de archivo";
puntero = fopen("unArchivo","a");
if(puntero==NULL){
printf("No existe archivo o no se creo");
} else{
fputs(cadena,puntero); // inserta el texto
fclose(puntero);
}
return 0;
}
Para leer un archivo de Texto
#include <stdio.h>
#include <stdlib.h>
FILE *puntero;
int main(){
char cadena[80];
puntero=fopen("unArchivo","r"); //en modo lectura r
if(puntero == NULL) printf("Archivo no encontrado");
fgets(cadena,80,puntero);
do
{
printf("%s \n",cadena);
system("PAUSE");
}
while(fgets(cadena,80,puntero)!=NULL);
fclose(puntero);
return 0;
}
Tipos de Archivos
Hay dos tipos de archivos, archivos de texto y archivos binarios.
Un archivo de texto es una secuencia de caracteres organizadas en líneas terminadas por un carácter de
nueva línea. En estos archivos se pueden almacenar canciones, fuentes de programas, base de datos
simples, etc. Los archivos de texto se caracterizan por ser planos, es decir, todas las letras tienen el
mismo formato y no hay palabras subrayadas, en negrita, o letras de distinto tamaño o ancho.
Un archivo binario es una secuencia de bytes que tienen una correspondencia uno a uno con un
dispositivo externo. Así que no tendrá lugar ninguna traducción de caracteres. Además, el número de
bytes escritos (leídos) será el mismo que los encontrados en el dispositivo externo. Ejemplos de estos
archivos son Fotografías, imágenes, texto con formatos, archivos ejecutables (aplicaciones), etc.
Descargar