"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


Hosted by www.Geocities.ws

1