24 nov

Ejercicios y practicas resueltas de c ( 3 )

Por admin

Un ejercicio nuevo de c sobre ficheros, para complementar tu formacion en nuestro portal de cursos online y de teleformacion.

El planteamiento de ejercicio es que se soliciten utilizando la linea de comandos tres ficheros de formas que se lean los datos de los dos primeros archivos y se concatenen en el tercer archivo indicado.

// Inclusion de librerias

#include <stdio.h>
#include <stdlib.h>

// Predefinicion de funciones

// funcion para saber si existe o no un fichero

int Existe(char *);

// Funcion principal

int main(int argc,char *argv[])
{

    // Control de los parametros obtenidos desde el sistema
    // El planteamiento de ejecucion de la orden es el siguiente
    // unir fichero1 fichero2 ficheronuevo
    if(argc!=4)
    {
        printf("\n¡parametros incorrectos...\n");
        printf("\nEl formato de la orden es orden fichero1 fichero2 ficherodestino\n");
        exit(1);
    }

    // Comprobacion de si existen los ficheros que se van a leer
    if(Existe(argv[1])==0)
    {
        printf("\nError: El primer archivo no existe o no se ha encontrado...\n");
        exit(1);
    }

    if(Existe(argv[2])==0)
    {
        printf("\nError: El segundo archivo no existe o no se ha encontrado...\n");
        exit(1);
    }

    if(Existe(argv[3])==0)
    {
        printf("\nEl archivo destino se creara automaticamente.\n");
    }
    else
    {
        printf("\nEl archivo destino ya existe y se sobreescribira automaticamente.\n");
    }

    // Apertura de los archivos

    FILE *fichero1;
    FILE *fichero2;
    FILE *fichero3;
    char caracter;

    fichero1=fopen(argv[1],"rt");
    if(fichero1==NULL)
    {
        printf("\nHa ocurrido un error en la apertura del archivo %s",argv[1]);
        exit(1);
    }

    fichero2=fopen(argv[2],"rt");
    if(fichero2==NULL)
    {
        printf("\nHa ocurrido un error en la apertura del archivo %s",argv[2]);
        exit(1);
    }

    fichero3=fopen(argv[3],"wt");
    printf("\nSe ha creado el archivo %s",argv[3]);
    printf("\nConcatenando archivos");

    // Lectura de los archivos y grabacion en el archivo destino
    // se realiza una prelectura para evitar errores de archivos
    // vacios.

    fread(&caracter,sizeof(char),1,fichero1);
    while(!feof(fichero1))
    {
        fwrite(&caracter,sizeof(char),1,fichero3);
        fread(&caracter,sizeof(char),1,fichero1);
        printf(".");
    }

    fread(&caracter,sizeof(char),1,fichero2);
    while(!feof(fichero2))
    {
        fwrite(&caracter,sizeof(char),1,fichero3);
        fread(&caracter,sizeof(char),1,fichero2);
        printf(".");
    }

    // Cierre de archivos

    fclose(fichero1);
    fclose(fichero2);
    fclose(fichero3);

    printf("\nFichero concatenado Ok.\n");

    return 0;
}

// Funcion Existe

int Existe(char *Nombre)
{
    int resultado;
    FILE *fichero;
    if((fichero=fopen(Nombre,"r"))==NULL) resultado=0;
    else {
        resultado=1;
        fclose(fichero);
    }
    return resultado;
}





Deja un comentario




Will not be published



Navegacion

Te podria interesar...

anteriorpausasiguiente

Dame Animo… haz clic !!!

Buscar en Google

Interesa ver…

Referencias

Sitio seleccionado por
el Directorio Flesko


Blog Directory, Find A Blog, Submit A Blog, Search For The Best Blogs
Blog Directory