*
 * Gli array (o vettori) ad 1 dimensione sono usati spesso per creare
 * stringhe di caratteri. Oltre ai tipi int, float ecc., esiste anche il
 * tipo char, che serve ad indicare i caratteri ASCII, pero' di solito i
 * caratteri non stanno da soli, bensi' in stringhe, ossia in file di byte
 * ognuno dei quali e' un carattere.
 * Se e' possibile fare un array con 20 variabili intere:
 *
 *	int provuccia[20];
 *
 * E' possibile fare anche un array con 20 variabili char, ossia caratteri:
 *
 *	char provetta[20];
 *
 * Una stringa di caratteri pero' in C deve essere terminata con uno zero,
 * detto anche NULL, che si puo' specificare con "\0", allo stesso modo
 * con cui "\n" specifica "a capo".
 * Si puo' subito inizializzare la stringa al momento della dichiarazione:
 *
 *	char provetta[5] = {"C","I","A","O","\0"};
 *
 * Un'altro modo e' questo:
 *
 *	char provetta[5] = "CIAO";
 *
 * Occorre pero' ricordarsi lo zero finale, per esempio se la nostra stringa
 * e' di 4 caratteri, come il "CIAO", occorre fare un array lungo 5, almeno
 * c'e' un byte azzerato in piu':
 *
 *	char provetta[4]="CIAO";	* Qua manca lo zero finale *
 *
 *	char provetta[5]="CIAO";	* Qua c'e' lo zero finale *
 *
 * Comunque, dato che alle volte puo' essere noioso contare quanto sono
 * lunghe le stringhe dell'inizializzazione, si puo' omettere il numero
 * tra le parentesi quadre, e l'array sara' inizializzata automaticamente
 * della lunghezza giusta:
 *
 *	char provalunga[]="Nel mezzo del cammin";
 *
 * In questo caso, dato che l'array contiene una stringa definita tra "",
 * viene aggiunto anche lo zero finale, ossia il \0, quindi la lunghezza
 * dell'array sara' lunghezzastringa+1.
 * Se invece il contenuto dell'array e' numerico, la dimensione sara' uguale
 * al numero di elementi, per esempio:
 *
 *      int necci[]={1,2,3,4,5,6,7};
 *
 * Questo e' equivalente a necci[7], in quanto ci sono 7 elementi numerici.
 * A questo punto occorre sapere altre 2 cose, per poter scrivere un
 * programmino che legge una stringa da tastiera e la memorizza nel nostro
 * array di elementi char.
 * Innanzitutto serve la funzione gets(), che serve proprio per leggere
 * una stringa da tastiera e copiarla nell'array char indicato.
 * La forma e' questa:
 *
 *	gets(nome_array)
 *
 * Basta mettere il nome dell'array senza indice.
 * Altra cosa da sapere e' che nel printf per visualizzare delle variabili
 * di tipo char occorre specificare %s:
 *
 *	printf("la stringa e' %s ",stringa);
 *
 * Per gli array char (vettori stringa) e' possibile usare una sintassi
 * alternativa del printf, che permette di stampare la stringa da sola
 * in questo modo:
 *
 *	printf(stringa);
 *
 * Se invece si vuol stampare un singolo carattere, e non l'intera stringa,
 * si deve usare il %c, ad esempio:
 *
 *	printf("\nIl primo carattere e' %c\n", stringa[0]);
 *
 * In questo modo possiamo utilizzare l'indice per indicare quale char
 * vogliamo stampare. Il %c si usa anche per singole variabili char.
 *
 * Vediamo infine il programmino:
 */

#include <stdio.h>	/* Includiamo la libreria standard */

/* Funzione principale e inizio del programma */

int main(void)		/* Funzione principale, eseguita per prima */
{			/* Inizio della funzione main() */

	char stringhina[30];	/* Un array di char, ossia una stringa */

	printf("Scrivi una stringa di caratteri: ");
	gets(stringhina);	/* Mi prendo una stinga con gets */

/* Stampiamo la stringa con la sintassi normale del printf e %s */

	printf("\nLa stringa e' %s\n", stringhina);

/* Stampiamo la stringa da sola: */

	printf(stringhina);

/* Stampiamo un carattere solamente con il %c */

	printf("\nIl primo carattere e' %c\n", stringhina[0]);

	return(0);	/* la funzione main restituisce uno 0 intero */
} 			/* Fine della funzione main() */


/* Da notare che se si immette una stringa piu' lunga di 30 caratteri, si
 * supera la fine del vettore, sovrascrivendo qualche programma, infatti
 * anche gli array di stringhe non sono controllati, si e' liberi di far
 * inchiodare il sistema.
 */