3° Anno TEORIA 9.1 EXTRA: ARRAY DI CHAR (STRINGHE) | Page 4

8-1 : EXTRA : Array di caratteri ( stringhe ) Vers . 4.3 – Febbraio 2022
Particolarità della CODIFICA C da applicare alle STRINGHE
Mettiamo a confronto quanto visto finora sugli array monodimensionali di caratteri ( stringhe ) nella PSEUDODIFICA ( struttura dati astratta ) rispetto al linguaggio di programmazione di alto livello C ( strutture dati previste dalla sintassi ).
PREMESSA : Nel linguaggio C le stringhe sono array monodimensionali di caratteri che devono obbligatoriamente prevedere un carattere speciale che indichi la loro fine . Tale carattere è chiamato CARATTERE DI TERMINAZIONE DELLA STRINGA ( o TAPPO ) e corrisponde al carattere '\ 0 '.
Inoltre come nella pseudocodifica , anche in questo caso la chiamata alle funzioni che utilizzeremo per le stringhe ( contenute nella libreria di sistema string . h che deve essere inclusa , ad inizio programma , nel caso di loro utilizzo ) restituiscono un valore nel nome della funzione stessa che quindi può essere utilizzato direttamente in un ’ espressione o in un confronto come se di fatto fosse una variabile .
Esempio 1 ) lettura e scrittura di un array monodimensionale di caratteri – LINGUAGGIO C
# include < stdio . h > # include < stdlib . h >
# define MAXDIM 50
int main ( int argc , char * argv [ ]) { char str [ MAXDIM + 1 ]; // Devo tenere conto del carattere di terminazione della stringa '/ 0 ' int i , n ;
/* leggo la dimensione della stringa da leggere rispettando il vincolo imposto da MAXDIM */ do { printf (" Inserisci la lunghezza della stringa : "); fflush ( stdin ); // la funzione fflush ( stdin ) pulisce il buffer dello datndard input ( tastiera ) scanf ("% d ", & n ); } while (( n < 1 ) || ( n > MAXDIM ));
/* carico uno alla volta i caratteri nella stringa */ for ( i = 0 ; i < n ; i ++) { printf (" Immetti il % d^ carattere della stringa : ", i + 1 ); fflush ( stdin ); scanf ("% c ", & str [ i ]); // alternative str [ i ] = getc ( stdin ); oppure str [ i ] = getchar ( ); } /* N . B . IMPORTANTISSIMO : devo impostare il CARATTERE DI TERMINAZIONE */ str [ n ] � '\ 0 ';
/* visualizzo uno alla volta i caratteri precedentemente immessi nella stringa */ printf (" la stringa immessa e ' : "); for ( i = 0 ; i < n ; i ++) { printf ("% c ", str [ i ]); // alternative putc ( str [ i ], stdout ); oppure putchar ( str [ i ]); } system (" PAUSE "); return 0 ; }
Autore : Rio Chierego ( email : riochierego @ libero . it - sito web : www . riochierego . it ) Pag . 4