Collico Savio Tecnología en OTT Foro Digital y Telecomunicaciones - Dic 2014
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería...
-
Upload
cleto-tamayo -
Category
Documents
-
view
18 -
download
4
Transcript of Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería...
![Page 1: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/1.jpg)
Universidad Domingo Universidad Domingo SavioSavio
Facultad de Ciencias y Tecnología de la Facultad de Ciencias y Tecnología de la InformaciónInformación
CarreraIngeniería en Redes y Telecomunicaciones
Materia : Programación IManejo de Archivos
![Page 2: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/2.jpg)
E/S para archivosE/S para archivosLas funciones y tipos están
definidos en <stdio.h>
FILE◦Estructura que define un descriptor
de archivoEOF
◦Constante para detectar el fin del archivo
![Page 3: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/3.jpg)
Apertura de flujosApertura de flujosfopen
◦Abre un archivo para su uso
◦ FILE* fopen(char* nombre, char* modo);
Devuelve el descriptordel archivo para su uso posterior.NULL en caso de error
Nombre del archivo a abrir
Modo de apertura(lectura, escritura, etc.)
![Page 4: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/4.jpg)
Apertura de flujosApertura de flujosr Abrir para lectura
w Abrir para escritura
a Abrir para añadir datos al final
rb Abrir para lectura binaria
wb Abrir para escritura binaria
ab Abrir para añadir datos binarios
r+ Abrir para lectura/escritura
w+ Crear archivo para lectura/escritura
a+ Abre o crea para añadir datos
r+b Abre para lectura/escritura binaria
w+b Crea para lectura/escritura binaria
a+b Abre o crea para añadir datos binarios
![Page 5: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/5.jpg)
Cierre de flujosCierre de flujosfclose
◦Cierra un archivo previamente abierto, liberando los recursos asociados al programa.
◦int fclose(FILE* f);
Éxito de la operación(0 en caso de éxito)
Flujo a cerrar
![Page 6: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/6.jpg)
Apertura y cierreApertura y cierre#include <stdio.h>
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");}
![Page 7: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/7.jpg)
Manejo de erroresManejo de erroresEn C, muchas funciones modifican una
variable global cuando ocurre un error.
Esta variable puede ser consultada para saber más acerca del error.
La variable global se llama “errno”.◦ Se define en <errno.h>
La función “strerror(int e)” entrega una descripcion de un código de error.◦ Se define en <string.h>
![Page 8: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/8.jpg)
Manejo de erroresManejo de errores#include <stdio.h>
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: %s\n",strerror(errno));
}
![Page 9: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/9.jpg)
Lectura de carácteresLectura de carácteresfgetc
◦Lee un carácter desde un archivo abierto para lectura.
◦int fgetc(FILE* f);
Descriptor de archivoDevuelve el carácter leído como un entero.En caso de error, devuelve EOF
![Page 10: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/10.jpg)
Lectura de carácteresLectura de carácteresfgets
◦Lee desde un archivo abierto para lectura hasta un largo fijo o el fin de línea.
◦ fgets(char* cadena, int longitud, FILE* f);
Arreglo de caracteres dondeguardar la cadena leída
Cantidad máxima decarácteres a leer
Descriptor dearchivo
![Page 11: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/11.jpg)
Lectura de carácteresLectura de carácteresint 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); }}
![Page 12: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/12.jpg)
Lectura de carácteresLectura de carácteres
int 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); }}
![Page 13: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/13.jpg)
Lectura de carácteresLectura de carácteresUna función muy útil es “feof”,
quien detecta si se ha alcanzado o no el fin de archivo.
feof◦Devuelve verdadero si se ha
alcanzado el fin de archivo◦int feof(FILE* f);
1: Fin de archivo0: otro caso
Descriptor de archivo
![Page 14: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/14.jpg)
Lectura de carácteresLectura de carácteresint 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);
}}
![Page 15: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/15.jpg)
Lectura de carácteresLectura de carácteresExiste una version de scanf para
archivos
int fscanf(FILE* f, char* fmt, ...);
Numero de conversionesrealizadas con éxito
Descriptor dearchivo
Variables aModificar (referencias!)
![Page 16: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/16.jpg)
Lectura de carácteresLectura de carácteresint main(){ FILE* archivo; archivo = fopen("test.txt","r"); if(archivo!=NULL){
char c;while( fscanf(archivo,"%c",&c)==1
)printf("%c",c);
fclose(archivo); }}
![Page 17: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/17.jpg)
Escritura de carácteresEscritura de carácteresCada función de lectura tiene su
pareja
int fputc(int c , FILE* f);◦ EOF en caso de error
int fputs(char* cadena, FILE* f);◦ EOF en caso de error
int fprintf(FILE* f, char* fmt, ...);◦ Devuelve el numero de transformaciones realizadas con éxito.
![Page 18: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/18.jpg)
Escritura de carácteresEscritura de carácteresarchivo2 = fopen("test2.txt","w+");
...do{
c = fgetc(archivo);if(c!=EOF){
fputc(c,archivo2);printf("%c",c);
}}while(c!=EOF);
![Page 19: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/19.jpg)
Escritura de carácteresEscritura de carácteresdo{
res=fgets(cadena,128,archivo);if(res!=NULL){
printf("%s",cadena);fputs(cadena,archivo2);
}while(res!=NULL);
![Page 20: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/20.jpg)
Escritura de carácteresEscritura de carácteres
while( fscanf(archivo,"%c",&c)==1 ){
printf("%c",c);
fprintf(archivo2,"%c",c);
}
![Page 21: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/21.jpg)
Escritura de carácteresEscritura de carácteresfflush
◦Vacia el buffer de escritura
◦int fflush(FILE* f);
Descriptor de archivoDevuelve EOF en casode error
![Page 22: Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.](https://reader033.fdocuments.es/reader033/viewer/2022061222/54c135ec497959e9068b45c4/html5/thumbnails/22.jpg)
Fin tema 10bFin tema 10bManejo de archivos de caracteres en C