giovedì 12 febbraio 2015

Modifica di un file di testo iscritto in C attraverso dalla line di commando DOS

/*Il programma sviluppata in C  Usando la line di comando ( argc e argv)
Il primo parametro argc di tipo int `e il contatore del numero di “argomenti” o “opzioni” passati al programma quando questo viene invocato sia dalla linea di comando che da un altro programma. Questi argomenti sono chiamati argomenti di linea (command line arguments) perch´e sono dati di seguito al nome dell’eseguibile del programma sulla stessa linea di comando. Il secondo parametro argv `e un array di puntatori a stringhe contenenti gli argomenti di linea passati al programma. La prima stringa argv[0] contiene il nome del programma o, se questo non `e disponibile, la stringa vuota.*/
---------------------------------------------------------------------------------------------------------------
Il contiene la stringa --> sotto quando viene esecuito dalla line di comando la stringa dovrebbe essere trasformata quello indica in basso con colori bule .

QUEL RAMO del lago di Como, che volge a mezzogiorno, tra due CATENE non interrotte di MONTI, tutto a seni e a golfi, a seconda dello sporgere E DEL RIENTRARE di quelli, vien, quasi

scambia TESTO.TXT MODIF.TXT ae
 ed il file TESTO.TXT
 contenesse i seguenti dati:
allora il programma dovrebbe produrre il seguente file MODIF.TXT perché dovrebbe sostituire tutte le lettere A (a) con E (e) e tutte le lettere E (e) con A (a):

QUAL REMO dal lego di Como, cha volga e mazzogiorno, tre dua CETANA non intarrotta di MONTI, tutto e sani a e golfi, e saconde dallo sporgara A DAL RIANTRERE di qualli, vian, quesi

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
int main( int argc, char *argv[] )
{
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+1
char c[200+1];  // secondo array di caratteri dimensione 200+1 che raccoglia il contenuto
//di senconda file chiamata modif

FILE *scambia; // apri il canale di file di scambia
FILE*modif;    // la seconda canale se modif che contine stringa modificata

        if ( argc != 2 && argc != 3 )
{
printf("ERRORE di parametri\n") ;
exit(1) ;
}
 /* apertura del file  in modalita lettura*/
scambia= fopen(argv[1], "r") ;

if (scambia==NULL ) // nel caso dalla mancanza di parametri stampa ERRORI
{
printf("impossibile aprire il file %s\n", argv[1]) ;
exit(1) ;
}
if (argc==2) // Se il argc ugule a 2 procede
{
/*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';

   }
 printf("%s\n",frase);
// una volta che elaborato la stringa, aper il secondo file per copiarle
     {
             modif=fopen("modif.txt","w"); // apre il secondo file in modalita scrittura
                     fscanf(modif,"%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(modif,"%s ",frase);
                          fclose(modif);  // chiusura dal primo file
                           // printf("%s",frase); // stampa la stringa elaborata
                              fclose(scambia); // chiusura dal secondo FILE
  }
          }
                       system("pause");
}
}

Nessun commento:

Posta un commento