Articolo pubblicato sul n. 84 di MCmicrocomputer (Edizioni Technimedia Srl - Roma) nell'aprile 1989
Software Amiga: Prima di commentare il listato, e' necessario definire con precisione cosa "combina" il programma Replace. Innanzitutto si tratta di un comando CLI che potremo aggiungere alla nostra directory "c:" per rendererlo disponibile come vero e proprio comando di sistema. E' stato compilato col Lattice C 4.0 direttamente col comando LC seguito dall'opzione -L che, come noto, provvede anche alla chiamata del Linker. Piu' semplice di cosi'... Come i piu' attenti avranno capito, Replace permette la ricerca e sostituzione di stringhe all'interno di un file, creandone uno nuovo con le modifiche attuate. La sintassi e' molto semplice:
Replace SourceFile DestFile str1 str2
Dove SourceFile e' il file da modificare (quindi gia' esistente) DestFile e' un nome per il file modificato (va bene anche lo stesso nome, ma, attenzione, cosi' perdiamo l'originale!!!) mentre str1 e str2 sono la stringa da ricercare e la stringa da sostituire per ogni occorrenza della prima. Ovviamente le due stringhe possono avere anche lunghezze diverse nonche' contenere anche codici esadecimali per individuare caratteri piu' ostici. E' anche possibile inserire una stringa vuota in modo da eliminare stringhe dal testo senza sostituirle con alcunche'. Il carattere di controllo per queste selezioni "strane" e' il simbolo del dollaro '$'. Un dollaro seguito da una coppia numerica esadecimale individua il carattere dal codice indicato. Se invece intendiamo cercare o sostituire proprio il carattere dollaro bastera' usare la coppia $$. Facciamo qualche esempio: sul nostro disco abbiamo il file denominato "testo". Decidiamo, ad esempio, di sostituire tutte le occorrenze della parola "pero'" con occorrenze di "ma". Il nuovo file, come al solito, lo chiameremo "pippo". Scriveremo:
Replace testo pippo pero' ma
Come vi avevo detto il tutto e' molto intuitivo. Proviamo ora a sostituire tutti i Carriage Return ($0D) con piu' amighevoli New Line ($0A):
Replace testo pippo $0D $0A
oppure a togliere tutte le occorrenze della parola "buongiorno":
Replace testo pippo buongiorno $
Ovviamente qualsiasi codice esadecimale puo' trovarsi anche in mezzo a caratteri piu' "unami", ad esempio possiamo fare la sostituzione:
Replace testo pippo ciao$20cara bye$20bye
dove, come e' noto, $20 rappresenta il codice ascii di uno spazio. Attenzione ad usare sempre maiuscole per le cifre alfabetiche dei caratteri esadecimali: nessun controllo e' eseguito per questi input
Descrizione del programma
Le prime linee del programma C listato in queste pagine,
sono classici include che ci permettono di utilizzare tipi e
definizioni all'interno del programma. La prima serie di
dichiarazioni sono poste fuori dal corpo del programma
essendo globali tanto al main quanto alle due subruotine
utilizzate. Dopo il controllo e la traduzione dell'input il
file sorgente viene caricato in una zona di memoria allocata
col comando AllocMem e analizzato e scaricato nel file
destinazione man mano che avvengono le sostituzioni. Con
"traduzione" degli input si intende la trasformazione di
eventuali codici preceduti dal simbolo '$' negli effettivi
valori ascii.
Articolo pubblicato su www.digiTANTO.it - per ulteriori informazioni clicca qui |