*
* 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...
*/
