Nov
24
Ejercicios y practicas resueltas de c ( 3 )
By- Ejercicios y practicas resueltas de c ( 3 )
- Ejercicios y Practicas de C (1)
- Ejercicios y practicas resueltas de C ( 4 )
- Ejercicios y practicas resueltas de c ( 5 )
- Ejercicios y practicas resueltas de c ( 6 )
- Ejercicios y practicas de programación en c ( 7 )
- Ejercicios y practicas de programación en ( 8 )
- Ejercicios y practicas de programación en c ( 9 )
- Practicas y ejercicios de programación en c ( 11 )
- Practicas y ejercicios de programación en c ( 10 )
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;
}

