giovedì 12 febbraio 2015

La modifica di un file di testo in C

/*Si desidera sviluppare un programma in linguaggio C per la modifica di un file di testo. La modifica consiste nel sostituire – scambiandoli tra loro – due caratteri alfabetici dati. In particolare, tutte le occorrenze del primo carattere dovranno essere sostituite dal secondo e viceversa. La sostituzione deve avvenire mantenendo la forma (maiuscola o minuscola) della lettera originaria. Il programma riceve sulla linea di comando tre parametri: il nome del file di testo da elaborare, il nome di un secondo file di testo nel quale salvare il risultato ed una stringa di 2 caratteri che specifica i caratteri da scambiare.
*/



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


int main() /* Difinizione dal Faile
Un file e un insieme di dati omogenee,memmorizzata in modo permanente su
memoria di massa in modo equenziale */
{
  FILE *scambia; //  puntatore al PRIMO file canale (il FILE originale dove contiena le frase)
  FILE*seco;     // il secondo FILE dove viene salvato le frase una volta modificata
  const int MAX=200;  /* Variabile costante di ti po intero dimensione MAX=200 per che indica
                       il massimo di numero di carattere di usare*/
  char frase[200+1];    // array di caratteri con dimensione 200
  char c[200+1];
     /* secondo array di caratteri dimensione 200+1 che raccoglia
  salva il contenuto di secondo FILE una volta modificata*/




/* apre il file da leggere (L'apertura di un file viene realizzata mediante la
funzione fopen */
  if(!(scambia=fopen("primo.txt","r")))

      {    
         printf("Errore in apertura del file da leggere");
         exit(1);  // nel caso di errori di apertura
            }
/*La funzione fgets ha tre argomenti: il primo è un vettore di
 caratteri in cui va memorizzata la linea del file di testo;
il secondo è il numero massimo di caratteri che si vogliono
mettere in questa stringa; il terzo è un descrittore di file,
 e indica da quale file si vuole leggere la stringa*/      
       while ( fgets(frase,MAX,scambia)!= NULL )

{
/* ciclo iterazione for per fare scorrere la stringa
  usand la funzione La funzione strlen() calcola la lunghezza della stringa frase,
(inteso come il numero di caratteri dell'array puntato da frase*/

    for(int i=0;i<strlen(frase);i++)

    {
/* if concatenata per controlli l' indice di for se la stringa
 contine caratteri miuscola e maiuscol(A-a)(e-E) scambiarle tra di loro*/
  if(frase[i]=='a')
      frase[i]='e';
  else if(frase[i]=='A')
      frase[i]='E';
  else if(frase[i]=='e')
      frase[i]='a';
  else if(frase[i]=='E')
      frase[i]='A';
        }
            seco=fopen("secondo.txt","w"); // apre il secondo file in modalita scrittura
                     fscanf(seco,"%s\t",c); /*Le funzioni fscanf() e fprintf() vengono utilizzate per la
lettura e la scrittura su file. Il loro comportamento
                                              è lo stesso delle funzioni scanf() */
                       fprintf(seco,"%s ",frase);
                          fclose(seco);  // chiusura dal primo file
                            printf("%s",frase); // stampa la stringa elaborata
                              fclose(scambia); // chiusura dal secondo FILE
 
                               }

                                 }

Nessun commento:

Posta un commento