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



[ad#enlaces1]

[ad#386x280aec2009]

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

ACEPTAR
Aviso de cookies