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