/*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
}
}
#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