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