Archivos-de-texto-2
-
Upload
omaar-mustaine-rattlehead -
Category
Documents
-
view
214 -
download
0
description
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