Copia di un file

Questo esercizio consiste nel copiare, riga per riga, un file su un altro. Supponiamo che il nome del file di partenza sia copia.txt e il file destinazione si debba chiamare x.

La soluzione è abbastanza ovvia: si aprono i due file (il primo in lettura e il secondo in scrittura). Poi si legge dal primo file una linea per volta, e se questa operazione di lettura ha successo si scrive la linea sul secondo file, altrimenti si esce dal ciclo di lettura.

Il programma copia.c realizza questo algoritmo.

/*
  Copia un file riga per riga
*/

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

int main() {
  FILE *in, *out;
  char buf[200];
  char *res;


		/* apre il file da leggere */
  in=fopen("copia.txt", "r");
  if( in==NULL ) {
    perror("Errore in apertura del file da leggere");
    exit(1);
  }


		/* apre il file da scrivere */
  out=fopen("x", "w");
  if( out==NULL ) {
    perror("Errore in apertura del file da scrivere");
    exit(1);
  }


		/* legge e scrive ogni riga */
  while(1) {
    res=fgets(buf, 200, in);
    if( res==NULL )
      break;
    fputs(buf, out);
  }


		/* chiude i file */
  fclose(in);
  fclose(out);

  return 0;
}

Per scrivere la linea sul secondo file si è usata la funzione fputs, che scrive una stringa su file. Al suo posto si sarebbe potuta usare la funzione fprintf, facendo fprintf(fd, "%s", buf), e il risultato sarebbe stato identico.