Archivos-de-texto-2

19
Manejo de archivos de caracteres (Texto) en C

description

rtrt

Transcript of Archivos-de-texto-2

PowerPoint Presentation

Manejo de archivos de caracteres (Texto) en C

E/S para archivosLas funciones y tipos estn definidos en

FILEEstructura que define un descriptor de archivoEOFConstante para detectar el fin del archivoApertura de flujosfopenAbre un archivo para su uso

FILE* fopen(char* nombre, char* modo);Devuelve el descriptordel archivo para su uso posterior.NULL en caso de errorNombre del archivo a abrirModo de apertura(lectura, escritura, etc.)Apertura de flujosrAbrir para lecturawAbrir para escrituraaAbrir para aadir datos al finalrbAbrir para lectura binariawbAbrir para escritura binariaabAbrir para aadir datos binariosr+Abrir para lectura/escrituraw+Crear archivo para lectura/escrituraa+Abre o crea para aadir datosr+bAbre para lectura/escritura binariaw+bCrea para lectura/escritura binariaa+bAbre o crea para aadir datos binariosCierre de flujosfcloseCierra un archivo previamente abierto, liberando los recursos asociados al programa.

int fclose(FILE* f);xito de la operacin(0 en caso de xito)Flujo a cerrarApertura y cierre#include

int main(){

FILE* archivo; archivo = fopen("testt.txt","r"); if(archivo!=NULL){ if(fclose(archivo)!=EOF) printf("Ok!\n"); else printf("Error al cerrar!\n"); }else printf("Error al abrir!\n");}Lectura de carcteresfgetcLee un carcter desde un archivo abierto para lectura.

int fgetc(FILE* f);Descriptor de archivoDevuelve el carcter ledo como un entero.En caso de error, devuelve EOFLectura de carcteresfgetsLee desde un archivo abierto para lectura hasta un largo fijo o el fin de lnea.

fgets(char* cadena, int longitud, FILE* f);Arreglo de caracteres dondeguardar la cadena ledaCantidad mxima decarcteres a leerDescriptor dearchivoLectura de carcteresint main(){ FILE* archivo; archivo = fopen("test.txt","r"); if(archivo!=NULL){ char c; do{ c = fgetc(archivo); printf("%c",c); }while(c!=EOF); fclose(archivo); }}Lectura de carcteresint main(){ FILE* archivo; archivo = fopen("test.txt","r"); if(archivo!=NULL){char* res;char cadena[128]; do{res=fgets(cadena,128,archivo);if(res!=NULL) printf("%s",cadena);}while(res!=NULL); fclose(archivo); }}Lectura de carcteresUna funcin muy til es feof, quien detecta si se ha alcanzado o no el fin de archivo.

feofDevuelve verdadero si se ha alcanzado el fin de archivoint feof(FILE* f);1: Fin de archivo0: otro casoDescriptor de archivoLectura de carcteresint main(){ FILE* archivo; archivo = fopen("test.txt","r"); if(archivo!=NULL){char cadena[128];while(!feof(archivo)){fgets(cadena,128,archivo);printf("%s",cadena);} fclose(archivo); }}

Lectura de carcteresExiste una version de scanf para archivos

int fscanf(FILE* f, char* fmt, ...);Numero de conversionesrealizadas con xitoDescriptor dearchivoVariables aModificar (referencias!)Lectura de carcteresint main(){ FILE* archivo; archivo = fopen("test.txt","r"); if(archivo!=NULL){char c;while( fscanf(archivo,"%c",&c)==1 )printf("%c",c);fclose(archivo); }}Escritura de carcteresCada funcin de lectura tiene su pareja

int fputc(int c , FILE* f);EOF en caso de errorint fputs(char* cadena, FILE* f);EOF en caso de errorint fprintf(FILE* f, char* fmt, ...);Devuelve el numero de transformaciones realizadas con xito.Escritura de carcteresarchivo2 = fopen("test2.txt","w+");...do{c = fgetc(archivo);if(c!=EOF){fputc(c,archivo2);printf("%c",c);}}while(c!=EOF);Escritura de carcteresdo{res=fgets(cadena,128,archivo);if(res!=NULL){printf("%s",cadena);fputs(cadena,archivo2);}while(res!=NULL);Escritura de carctereswhile( fscanf(archivo,"%c",&c)==1 ){printf("%c",c);fprintf(archivo2,"%c",c);}Escritura de carcteresfflushVacia el buffer de escritura

int fflush(FILE* f);Descriptor de archivoDevuelve EOF en casode error