In questa serie di tutorial sulla programmazione C in corso, abbiamo già toccato il concetto di array di caratteri. Strettamente correlato agli array di caratteri è il concetto di stringhe, di cui parleremo qui.
Una stringa differisce da un array di caratteri in un'area principale:termina con un carattere Null '\0'. Non esiste un tale carattere di terminazione in una matrice di caratteri. La seguente parte di codice mostra alcuni modi in cui è possibile definire una stringa:
#include <stdio.h>
int main()
{
char str[] = "string";
char str1[] = {'s','t','r','i','n','g','\0'};
char str2[10] = "string";
char str3[10] = {'s','t','r','i','n','g','\0'};
char *str4 = "string";
printf("\n str=%s, str1=%s, str2=%s, str3=%s, and str4=%s", str, str1, str2, str3, str4);
return 0;
}
Quindi, un gruppo di caratteri tra virgolette doppie è una stringa (la terminazione del carattere Null è implicita lì) e anche una serie di caratteri che terminano esplicitamente con un carattere \0 è una stringa.
L'output di questo programma è:
str=string, str1=string, str2=string, str3=string, and str4=string
Tieni presente che non puoi stampare array di caratteri non stringa in questo modo, poiché non esiste un carattere Null terminante lì per indicare la fine dell'array. Ecco un pezzo di codice che tenta di farlo:
#include <stdio.h>
int main()
{
char str[] = {'e','n','d'};
char c ='t';
printf("\n str=%s", str);
return 0;
}
Ma finisce invece per stampare valori spazzatura alla fine:
str=end??
Andando avanti, proprio come l'identificatore di formato %s in 'Printf' dice al compilatore di trattare le variabili di input come stringhe, puoi anche usare %s nella funzione 'scanf' per accettare stringhe come input dall'utente. Ecco un esempio:
#include <stdio.h>
int main()
{
char str[30];
printf("\n Enter a string with length less than 30 characters: ");
scanf("%s",str);
printf("\n str=%s", str);
return 0;
}
Vale la pena ricordare che una sequenza di zero o più caratteri racchiusi tra virgolette è chiamata costante stringa o letterale stringa. Ciò significa che sia "howtoforge" che "" sono costanti stringa o letterali stringa.
Puoi trovare la lunghezza di una stringa usando la funzione standard strlen(). Ecco un esempio:
#include <stdio.h>
int main()
{
char str[] = "howtoforge";
printf("\n Length of string 'howtoforge' is: %d", strlen(str));
return 0;
}
L'output prodotto da questo programma è 10, che è esattamente il numero di caratteri in 'howtoforge', e quindi la sua lunghezza.
Andando avanti, vale la pena tenere presente che un carattere tra virgolette singole (come 'd') e un carattere tra virgolette doppie (come "d") sono diversi l'uno dall'altro. Mentre la prima è una costante di carattere (che può essere utilizzata per produrre un valore numerico del carattere nel set di caratteri della macchina), la seconda è una stringa (che significa che contiene un carattere \0 di terminazione).
Infine, diamo rapidamente un'occhiata a come le stringhe possono essere passate come argomenti alle funzioni.
#include <stdio.h>
void change_value(char s[])
{
s[0] = 'H';
s[5] = 'F';
printf("%s", s);
}
int main()
{
char str[] = "howtoforge";
change_value(str);
return 0;
}
Quindi nel programma sopra, è il nome dell'array 'str' che viene passato come argomento perché si riferisce all'indirizzo di base dell'array. La dichiarazione per la funzione 'change_value' è tale da prevedere un array come input. Ecco l'output di questo programma:
HowtoForge
Quindi, in questo tutorial, abbiamo discusso le basi delle stringhe, incluso come vengono definite e come possono essere utilizzate. Impareremo di più sulle stringhe nei tutorial a venire, ma questo articolo dovrebbe essere sufficiente per iniziare. Facci sapere nei commenti qui sotto se hai domande o dubbi relativi alle stringhe.