#include <stdio.h> /* printf (), gets (), fprintf (), stderr, EOF,
fopen (), fclose (), fgetc (), fputc (), NULL */
#include <conio.h> /* getch () */
#include <string.h> /* strcpy () */
#include <ctype.h> /* toupper () */
#define BOOLEAN int
#define TRUE 1
#define FALSE 0
#define ESC 27
#define ENTER 'r'
#define NUMMAXCARACTERES 255
void main (void)
{
BOOLEAN salir = FALSE;
char nombre_fichero_entrada[NUMMAXCARACTERES],
nombre_fichero_salida[NUMMAXCARACTERES];
FILE *pfe, *pfs; /* punteros a fichero de entrada y fichero de
salida resp. */
char ch;
while (! salir)
{
puts ("nnCOPIAR FICHERO CON EL SISTEMA DE FICHEROS DE ALTO NIVEL:n");
printf ("Introduzca nombre de fichero de entrada (ENTER o CON "
"para teclado): ");
gets (nombre_fichero_entrada);
if (*nombre_fichero_entrada == ' ')
strcpy (nombre_fichero_entrada, "con");
printf ("Introduzca nombre de fichero de salida (ENTER o CON "
"para pantalla): ");
gets (nombre_fichero_salida);
if (*nombre_fichero_salida == ' ')
strcpy (nombre_fichero_salida, "con");
if ((pfe = fopen (nombre_fichero_entrada, "r")) == NULL)
fprintf (stderr, "nERROR: No es posible abrir el fichero de "
"entrada %s.n", nombre_fichero_entrada);
else if ((pfs = fopen (nombre_fichero_salida, "w")) == NULL)
{
fprintf (stderr, "nERROR: No es posible abrir el fichero "
"de salida %s.n", nombre_fichero_salida);
fclose (pfe);
}
else
{
int c;
while ((c = fgetc (pfe)) != EOF)
fputc (c, pfs);
fclose (pfe);
fclose (pfs);
}
printf ("nn¿Desea copiar otro fichero (S o ENTER: Sí; N o "
"ESC: No)? ");
do
{
ch = getch ();
} while (ch != ENTER && toupper (ch) != 'S' &&
ch != ESC && toupper (ch) != 'N');
salir = ch == ESC || toupper (ch) == 'N';
}
}