* * Un esempio della potenza degli array char per la gestione delle stringhe * e' questo programmino che rovescia una stringa immessa da tastiera. * Arriviamoci per gradi. Intanto, avendo una stringa di dimensione nota, * vediamo come stamparla alla rovescia. * Dovremo partire dall'ultimo carattere della stringa e stamparlo, poi * stampare il penultimo e cosi' via, fino al primo. * Si potrebbe fare con un ciclo FOR: * * for(i=10 ; i>=0 ; i--) printf("%c", stringa[i]); * * Se la stringa e' lunga 10 caratteri, questo loop basta. Ma se facciamo * immettere la stringa da tastiera, non possiamo sapere quanto e' lunga, * dato che non esiste una routine in grado di prevedere il futuro. * Pero' esiste una funzione standard, chiamata strlen(), che ci puo' * dire quanto e' lunga una stringa, ossia dopo quanti caratteri si trova * lo zero, che segna la fine della stringa stessa. * La sintassi e' questa: * * strlen(nomestringa) * * E ci restituisce la lunghezza della stringa. Per poter usufruire di * questa funzione pero' occorre caricare il file include <string.h>. * Il loop di prima diventa quindi: * * for(i=strlen(stringa)-1 ; i>=0 ; i--) printf("%c", stringa[i]); * * il -1 serve per evitare di partire dallo zero, a noi interessa partire * dall'ultimo carattere, che e' il penultimo elemento dell'array, prima * dello zero. * */ #include <stdio.h> /* Includiamo la libreria standard */ #include <string.h> /* Libreria con le funzioni per le stringhe */ /* Funzione principale e inizio del programma */ int main(void) /* Funzione principale, eseguita per prima */ { /* Inizio della funzione main() */ char stringa[80]; /* Facciamo un array abbastanza lungo per la stringa*/ int i; /* Una variabile intera che ci servira' come indice */ printf("\nInserisci la stringa da invertire: "); gets(stringa); /* Prendiamo la stringa...*/ /* Ora stampiamo alla rovescia la stringa con un loop che stampa tutti i * caratteri, partendo dall'ultimo, all'indietro fino al primo.*/ for(i=strlen(stringa)-1 ; i>=0 ; i--) printf("%c", stringa[i]); printf("\n"); /* Andiamo a capo dopo il loop...*/ return(0); /* la funzione main restituisce uno 0 intero */ } /* Fine della funzione main() */ /* Nel file include <string.h> ci sono altre funzioni gia' pronte da usare * con le stringhe, come: * * strcopy(stringasorgente,stringadestinazione) * * strcopy() serve a copiare una stringa in un'altra. * * strcat(stringa1,stringa2) * * strcat() aggiunge stringa2 a stringa1, lasciando immutata stringa2. In * altri termini "attacca" stringa2 a stringa1. * * strcmp(stringa1,stringa2) * * strcmp() confronta due stringhe e restituisce 0 se risultano uguali. * Se stringa1 e' maggiore di s2 (in termini di ordine alfabetico) la * funzione restituisce un numero positivo, altrimenti un numero negativo. * * Comunque sarebbe meglio rifarle di propria mano, anziche' usare queste * gia' pronte, altrimenti non si impara molto... */