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