Está en la página 1de 10
ssrntit1 Programacién en CiManejo de archivos - Wiklibros Programacién en C Manejo de archivos De Wikilibros, la coleccién de libros de texto de contenido libre. Programacién en C/Manejo de archivos Asi como hemos revisado la salida y entrada por pantalla y teclado respectivamente, veremos ahora la entrada ylo salida de datos utiizando ficheros, lo cual serd imprescindible para un gran nimero de aplicaciones que deseemos desarrollar. Contenido = 1 Ficheros = 1.1 fopen = 12 felose = 13 feof = 14 rewind = 2 Lectura = 2.1 fete 2.2 fgets 2.3 fread 2.4 icant = 3 Escritura = 3.1 fpute = 3.2 fputs = 3.3 fiwtite = 3.4 fprintt Ficheros Elestindar de C contiene fimciones varias para la edicién de ficheros, estas estén definidas en la cabecera stdio.h y por lo general empiezan con la letra f, haciendo referencia a file. Adicionalmente se agrega un tipo FILE, el cual se usar como apuntador a la informacién del fichero. La secuencia que usaremos para realizar operaciones sera la siguiente: * Crear un apuntador del tipo FILE * * Abrir el archivo utilizando la funcién fopen y asigndndole el resultado de la llamada a nuestro apuntador. = Hacer las diversas operaciones (lectura, escritura, etc). * Cerrar el archivo utilizando la fimcién felose. ssrntit1 Programacién en CiManejo de archivos - Wiklibros Esta fimcién sitve para abrir y crear ficheros en disco. El prototipo correspondiente de fopen es: FILE * fopen (const char *£filename, const char *opentypel Los parimetros de entrada de fopen son: filename: una cadena que contiene un nombre de fichero vilido. opentype: especitica el tipo de fichero que se abrird 0 se crear’, Una lista de parmetros opentype para la fimcién fopen son: = 'r": abrir un archivo para lectura, el fichero debe existr. = "w" :abrir un archivo para escritura, se crea sino existe o se sobreescribe si existe = a" abrir un archivo para escritura al final del contenido, sino existe se crea. = "r+" abrir un archivo para lectura y escritura, el fichero debe existir. = "wh": crear un archivo para lectura y escritura, se crea sino existe o se sobreescribe si existe. = "at" :abriv/erear un archivo para lectura y eseritura al final del contenido Adicionalmente hay tipos utilizando "b" (binary) los cuales no s Ios sistemas operativos que no pertenecen a la familia de unix. srin mostrados por ahora y que solo se usan en felose Esta fimcidn sirve para poder cerrar un fichero que se ha abierto. Elprototipo correspondiente de felose es int felose (FILE “stream; A Un valor de retorno cero indica que el fichero ha sido correctamente cerrado, si ha habido algun error, el valor de retomno es la constante EOF Un ejemplo pequefio para abrir y cerrar el archivo llamado fichero.in en modo leetura: t main(int arge, char** argv) FILE “fp; 7 fp = fopen ( "fichero.in"™, "r™ } 7 felose ( fp Como vemos, en el ejemplo se utiizé el opentype "s", que es para la kectura. tra cosa importante es que el lenguaje C no tiene dentro de siuna estructura para el manejo de excepciones 0 de ertores, por eso es necesario comprobar que el archivo fue abierto con éxito "if(archivo = NULL)". Si ssrntit1 Programacién en CiManejo de archivos - Wiklibros solo vamos a dar una salida con un retomo de 1 que sirve para sefialar que el programa termino por un error. feof Esta fimcién sitve para determinar si el cursor dentro del archivo encontré el final (end of file). Existe otra forma de verificar el final del archivo que es comparar el caracter que trae fgete del archivo con el macro EOF declarado dentro de stdio.h, pero este método no offece la misma seguridad (en especial al tratar con los archivos "binarios"), La fimcién feof siempre devolveri cero (Falso) sino es encontrado EOF en el archivo, de Jo contrario regresaré un valor distinto de cero (Verdadero). El prototipo correspondiente de feofes: feof (PILE *fichero); rewind Literalmente significa "'rebobinar”, sitia el cursor de lectura/escritura al principio del archivo, El prototipo correspondiente de rewind es: void rewind (FILE *fichero s) que esta guardado en el disco Lectura Unarchivo generalmente debe verse como un string (una cadena de caracter duro, Para trabajar con los archivos existen diferentes formas y diferentes fimneiones. Las fimciones que podriamos usar para leer un archivo son: = char fgete(FILE *archivo) = char *fgets(char *buffer, int tamano, FILE *archivo) = size_{ fiead(void *puntero, size_{ tamano, size_t cantidad, FILE *archivo); = int fcanf{FILE *fichero, const char * formato, argumento, Las primeras dos de estas fimciones son muy parecidas entre si, Pero la tercera, por el numero y el tipo de parimetros, nos podemos dar cuenta de que es muy diferente, por eso la trataremos aparte junto al fwrite que ¢s su contraparte para escritura fgete Esta fimcién lee un caracter a la vez del archivo que esta siendo seflalado con el puntero *arehivo. En caso de que la lectura sea exitosa devuelve el caracter leido y en caso de que no lo sea o de encontrar el final del archivo devuelve EOF. El prototipo correspondiente de fgete es: char fyete (FILE tarchivo) : Esta fimcién se usa generalmente para recorrer archivos de texto. A manera de ejemplo vamos a suponer que tenemos un archivo de texto llamado "prueba.txt" en el mismo directorio en que se encuentra el fuente de nuestro programa. Un pequefio programa que lea ese archivo sera:

También podría gustarte