Vai al contenuto

C/Variabili, operatori e costanti/Stringhe

Wikibooks, manuali e libri di testo liberi.
Indice del libro

Le stringhe in C sono dei vettori di caratteri e non come tipo unico. Le stringhe C sono sempre concluse dal carattere nullo.

Dichiarazione di una stringa

[modifica | modifica sorgente]

È possibile anche assegnare una stringa ad un puntatore ad un char, ma è sconsigliato perché si scriverà in parti di memoria non allocate e sovrascrivere dati necessari all'esecuzione del programma. Ciò può essere fatto in modo sicuro con le funzioni di allocazione dinamica della memoria. Il puntatore, in questo caso, punterà al primo carattere della stringa.

Una stringa non è altro che un array di elementi di tipo char. Questo fa pensare subito a un tipo di dichiarazione immediato (ma alquanto scomodo):

char my_string[] = { 'H','e','l','l','o','\0' };

Il carattere \0 è necessario per terminare la stringa. La dichiarazione vista sopra non è comodissima, ragion per cui il C consente di dichiarare le stringhe direttamente così:

char my_string[] = "Hello";

Ovviamente si può dichiarare le stringhe senza inizializzarle. In questo caso le si dichiara specificando il nome e la dimensione:

//stringa di 20 caratteri di cui 1 per \0 
char my_string[20];

Uso delle stringhe

[modifica | modifica sorgente]

Visualizzazione dei caratteri di una stringa

[modifica | modifica sorgente]
#include <stdio.h>
char frase[]="sono una stringa";
int main (void)
{
    printf("%s", frase);
}

Lo specificatore %s indica una stringa alla funzione printf.

Lettura sicura dei caratteri di una stringa

[modifica | modifica sorgente]
#include <stdio.h>
int main (void)
{
    char frase[10];
    fgets(frase,10,stdin);
}

fgets(char *str, int lun, FILE *stream) legge i caratteri da un file che se si pone come stdin è lo schermo della console e li memorizza come una stringa C finché (num-1) caratteri sono stati letti o un ritorno a capo o si raggiunge la fine del file (EOF). Un carattere di nuova riga fa interrompere la lettura, ma è considerato un carattere valido e, pertanto, è incluso nella stringa str. Un carattere nullo viene automaticamente aggiunto in str dopo i caratteri letti per segnalare la fine della stringa C.

Funzioni per le stringhe

[modifica | modifica sorgente]

string.h è l'header file della libreria standard del C che contiene definizioni di macro, costanti e dichiarazioni di funzioni e tipi usati non solo nella manipolazione delle stringhe ma anche nella manipolazione della memoria.

Le funzioni dichiarate in string.h sono molto popolari ed essendo parte della libreria standard del C, il loro funzionamento è garantito su ogni piattaforma che supporta il linguaggio C. Le funzioni in questione lavorano solamente con caratteri ASCII o con un set di caratteri che lo estende in modo compatibile come l'ISO-8859-1; i set di caratteri a più byte compatibili con l'ASCII, come l'UTF-8, possono funzionare solo a condizione che la lunghezza della stringa sia interpretata come il numero di byte nella stessa piuttosto che il numero di caratteri Unicode. La gestione di stringhe non compatibili con l'ASCII viene generalmente risolto con l'uso della libreria wchar.h.