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;
}





Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies