"Código de Ejemplo para el Manejo de Archivos"
USO DE LA FUNCIÓN fprintf() PARA ESCRIBIR CON FORMATO EN UN ARCHIVO DE TEXTO
Código:
/*
Archivo: ArchivosEscribir.c
Descripcion: Este programa permite el manejo de archivos para escribir
informacion con la funcion printf()
Autor: Basurto Páez Gustavo
Fecha: 03 de julio de 2008
*/
/*Incluir librerias*/
#include <stdio.h>
#include <stdlib.h>
//Especifica el numero de enteros a escribir linea a linea en el archivo
#define ENTEROS 10
//Especifica el numero de flotantesa escribir linea a linea en el archivo
#define FLOTANTES 5
FILE *AbrirArchivoArgumento(int argc,char *argv[], char *modo);
FILE *AperturaArchivoVerificacion();
FILE *AbrirArchivo( char ruta_nombre[], char modo_apertura[] );
void CerrarArchivo( FILE *arch);
int main(int argc,char *argv[])
{
FILE *archivo;
float valor = 0.3152;
int cont=0;
//Apertura del archivo FORMATO w+
archivo = AbrirArchivoArgumento(argc,argv, "w+" );
if( archivo != NULL)
{
//ESCRIBIR ENTEROS
for(cont =0 ; cont < ENTEROS ; cont++)
{
fprintf(archivo, "%d", cont);
fprintf(archivo, "\n");
printf("%d", cont);
printf("\n");
}
//ESCRIBIR FLOTANTES
for(cont =0 ; cont < FLOTANTES ; cont++)
{
valor = valor + cont;
fprintf(archivo, "%f", valor);
fprintf(archivo, "\n");
printf("%f", valor);
printf("\n");
}
//ESCRIBIR CADENAS
fprintf(archivo, "%s", "Hola mundo\n");
fprintf(archivo, "%s", "Adios mundo\n");
printf("%s", "Hola mundo\n");
printf("%s", "Adios mundo\n");
CerrarArchivo( archivo);
}
return(0);
}
/**
*Descripcion:
*Entrada:
*Salida:
**/
FILE * AbrirArchivoArgumento(int argc,char *argv[], char *modo)
{
FILE *arch;
if( argc < 1 )
{
arch = AperturaArchivoVerificacion();
}
else
{
arch= AbrirArchivo( argv[1], modo);
if( arch==NULL)
{
arch = AperturaArchivoVerificacion();
}
}
return (arch);
}
/**
*Descripcion:
*Entrada:
*Salida:
**/
FILE *AperturaArchivoVerificacion()
{
FILE *arch;
char ruta_nombre[200];
do{
printf("\n\tEscribe la ruta del archivo \n\tFORMATO Completo (pued auxiliarse del comando 'pdw' para obtener la ruta) Ejemplo: /lab/computacion/PA2/pa/DPPPractica1/Datos.txt\n\tNombre del Archivo:");
fflush(stdin);
//gets(ruta_nombre);
scanf("%s", &ruta_nombre);
arch= AbrirArchivo( ruta_nombre, "r+");
}while(arch == NULL);
}
/**
*Descripcion:
*Entrada:
*Salida:
**/
void CerrarArchivo( FILE *arch)
{
fclose(arch);
}
/**
*Descripcion:
*Entrada:
*Salida:
**/
FILE *AbrirArchivo( char ruta_nombre[], char modo_apertura[] )
{
FILE *arch;
arch=fopen(ruta_nombre,modo_apertura);
if(arch==NULL)
{
printf("\n\tERROR AL ABRIR EL ARCHIVO %s", ruta_nombre);
printf("\n\tVerifique que la ruta, nombre y extension sean correctos\n");
}
else
{
printf("\n\tTu archivo se abrio con exito");
}
return (arch);
}
NOTA: El nombre del archivo se pasa como argumento al ejecutar el programa.
Evidencia del Archivo Creado:
0
1
2
3
4
5
6
7
8
9
0.315200
1.315200
3.315200
6.315200
10.315200
Hola mundo
Adios mundo
USO DE LA FUNCIÓN scanf() PARA LEER CON FORMATO DESDE UN ARCHIVO DE TEXTO
Código: .
/*
Archivo: ArchivosEscribir.c
Descripcion: Este programa permite el manejo de archivos para leer
informacion con la funcion scanf()
Se tienen que verificar el formato de lectura,
es decir, si en la línea 1 hay un entero y en la 2 una cadena,
se utiliza la funcion scanf() para leer un entero y despues la cadena.
Autor: Basurto Páez Gustavo
Fecha: 03 de julio de 2008
*/
/*Incluir librerias*/
#include <stdio.h>
#include <stdlib.h>
//Especifica el numero de enteros a leer linea a linea en el archivo
#define ENTEROS 10
//Especifica el numero de flotantesa leer linea a linea en el archivo
#define FLOTANTES 5
//Tamanio de la cadena
#define TAMCADENA 50
FILE *AbrirArchivoArgumento(int argc,char *argv[], char *modo);
FILE *AperturaArchivoVerificacion();
FILE *AbrirArchivo( char ruta_nombre[], char modo_apertura[] );
void CerrarArchivo( FILE *arch);
int main(int argc,char *argv[])
{
FILE *archivo;
float valor = 0.0;
int valorEnt =0;
char cadena1[TAMCADENA];
char cadena2[TAMCADENA];
int cont=0;
//Apertura del archivo FORMATO R
archivo = AbrirArchivoArgumento(argc,argv, "r" );
if( archivo != NULL)
{
//LEER ENTEROS
for(cont =0 ; cont < ENTEROS ; cont++)
{
fscanf(archivo, "%d", &valorEnt);
printf("\n%d", valorEnt);
}
//LEER FLOTANTES
for(cont =0 ; cont < FLOTANTES ; cont++)
{
fscanf(archivo, "%f", &valor);
printf("%f", valor);
printf("\n");
}
//LEER CADENAS
//con la funcion Scanf se lee hasta encontrar un espacio
//ó un fin de linea
fscanf(archivo, "%s", &cadena1);
printf("%s", cadena1);
//A diferencia de la funcion fgets que lee hasta el fin de linea
//Se lee como maximo TAMCADENA caracteres o al fin de linea
fgets( cadena1, TAMCADENA, archivo);
printf("%s", cadena1);
//Segunda cadena
fgets( cadena2, TAMCADENA, archivo);
printf("%s", cadena2);
CerrarArchivo( archivo);
}
getch();
return(0);
}
/**
*Descripcion:
*Entrada:
*Salida:
**/
FILE * AbrirArchivoArgumento(int argc,char *argv[], char *modo)
{
FILE *arch;
if( argc < 1 )
{
arch = AperturaArchivoVerificacion();
}
else
{
arch= AbrirArchivo( argv[1], modo);
if( arch==NULL)
{
arch = AperturaArchivoVerificacion();
}
}
return (arch);
}
/**
*Descripcion:
*Entrada:
*Salida:
**/
FILE *AperturaArchivoVerificacion()
{
FILE *arch;
char ruta_nombre[200];
do{
printf("\n\tEscribe la ruta del archivo \n\tFORMATO Completo (pued auxiliarse del comando 'pdw' para obtener la ruta) Ejemplo: /lab/computacion/PA2/pa/DPPPractica1/Datos.txt\n\tNombre del Archivo:");
fflush(stdin);
//gets(ruta_nombre);
scanf("%s", &ruta_nombre);
arch= AbrirArchivo( ruta_nombre, "r+");
}while(arch == NULL);
}
/**
*Descripcion:
*Entrada:
*Salida:
**/
void CerrarArchivo( FILE *arch)
{
fclose(arch);
}
/**
*Descripcion:
*Entrada:
*Salida:
**/
FILE *AbrirArchivo( char ruta_nombre[], char modo_apertura[] )
{
FILE *arch;
arch=fopen(ruta_nombre,modo_apertura);
if(arch==NULL)
{
printf("\n\tERROR AL ABRIR EL ARCHIVO %s", ruta_nombre);
printf("\n\tVerifique que la ruta, nombre y extension sean correctos\n");
}
else
{
printf("\n\tTu archivo se abrio con exito");
}
return (arch);
}
NOTA: El nombre del archivo se pasa como argumento al ejecutar el programa, seleccione el mismo archivo que se creo con el programa anterior.
Evidencia de Ejecución :
Tu archivo se abrio con exito
0
1
2
3
4
5
6
7
8
90.315200
1.315200
3.315200
6.315200
10.315200
Hola mundo
Adios mundo