Cos'è String in C?
Una stringa in C non è altro che una raccolta di caratteri in una sequenza lineare. 'C' tratta sempre una stringa un singolo dato anche se contiene spazi bianchi. Un singolo carattere viene definito utilizzando la rappresentazione di virgolette singole. Una stringa è rappresentata utilizzando virgolette doppie.
Example, "Welcome to the world of programming!"
'C' fornisce la libreria standard
In questo tutorial imparerai-
- Come dichiarare e inizializzare una stringa in C
- Input stringa: legge una stringa
- Output stringa: stampa / visualizza una stringa
- funzione fputs ()
- mette la funzione
- La libreria di stringhe
- Conversione di una stringa in un numero
Come dichiarare e inizializzare una stringa in C
AC String è un semplice array con char come tipo di dati. La lingua "C" non supporta direttamente la stringa come tipo di dati. Quindi, per visualizzare una stringa in C, è necessario utilizzare un array di caratteri.
La sintassi generale per dichiarare una variabile come stringa in C è la seguente,
char string_variable_name [array_size];
La classica dichiarazione di stringhe può essere eseguita come segue:
char string_name[string_length] = "string";
La dimensione di un array deve essere definita durante la dichiarazione di una variabile stringa C perché viene utilizzata per calcolare quanti caratteri verranno memorizzati all'interno della variabile stringa in C. Alcuni esempi validi di dichiarazione di stringa sono i seguenti,
char first_name[15]; //declaration of a string variablechar last_name[15];
L'esempio sopra rappresenta variabili stringa con una dimensione di matrice di 15. Ciò significa che la matrice di stringhe C fornita è in grado di contenere al massimo 15 caratteri. L'indicizzazione dell'array inizia da 0, quindi memorizzerà i caratteri da una posizione 0-14. Il compilatore C aggiunge automaticamente un carattere NULL "\ 0" alla matrice di caratteri creata.
Studiamo l'inizializzazione delle stringhe in C. L'esempio seguente mostra l'inizializzazione delle stringhe in C,
char first_name[15] = "ANTHONY";char first_name[15] = {'A','N','T','H','O','N','Y','\0'}; // NULL character '\0' is required at end in this declarationchar string1 [6] = "hello";/* string size = 'h'+'e'+'l'+'l'+'o'+"NULL" = 6 */char string2 [ ] = "world"; /* string size = 'w'+'o'+'r'+'l'+'d'+"NULL" = 6 */char string3[6] = {'h', 'e', 'l', 'l', 'o', '\0'} ; /*Declaration as set of characters ,Size 6*/
In string3, il carattere NULL deve essere aggiunto in modo esplicito ei caratteri sono racchiusi tra virgolette singole.
'C' ci permette anche di inizializzare una variabile stringa senza definire la dimensione dell'array di caratteri. Può essere fatto nel modo seguente,
char first_name[ ] = "NATHAN";
Il nome delle stringhe in C funge da puntatore perché è fondamentalmente un array.
Input stringa: legge una stringa
Quando si scrivono programmi interattivi che chiedono input all'utente, C fornisce le funzioni scanf (), gets () e fgets () per trovare una riga di testo inserita dall'utente.
Quando usiamo scanf () per leggere, usiamo l'identificatore di formato "% s" senza usare "&" per accedere all'indirizzo della variabile perché il nome di un array funge da puntatore. Per esempio:
#includeint main() {char name[10];int age;printf("Enter your first name and age: \n");scanf("%s %d", name, &age);printf("You entered: %s %d",name,age);}
Produzione:
Enter your first name and age:John_Smith 48
Il problema con la funzione scanf è che non legge mai intere stringhe in C. Arresta il processo di lettura non appena si verificano spazi vuoti, avanzamento modulo, tabulazione verticale, ritorno a capo o ritorno a capo. Supponiamo di fornire l'input come "Tutorial Guru99", quindi la funzione scanf non leggerà mai un'intera stringa poiché tra i due nomi è presente uno spazio vuoto. La funzione scanf leggerà solo Guru99.
Per leggere una stringa che contiene spazi, usiamo la funzione gets (). Ottiene ignora gli spazi vuoti. Arresta la lettura quando viene raggiunta una nuova riga (viene premuto il tasto Invio). Ad esempio:
#includeint main() {char full_name[25];printf("Enter your full name: ");gets(full_name);printf("My full name is %s ",full_name);return 0;}
Produzione:
Enter your full name: Dennis RitchieMy full name is Dennis Ritchie
Un'altra alternativa più sicura a gets () è la funzione fgets () che legge un numero specificato di caratteri. Per esempio:
#includeint main() {char name[10];printf("Enter your name plz: ");fgets(name, 10, stdin);printf("My name is %s ",name);return 0;}
Produzione:
Enter your name plz: CarlosMy name is Carlos
Gli argomenti di fgets () sono:
- il nome della stringa,
- il numero di caratteri da leggere,
- stdin significa leggere dallo standard input che è la tastiera.
Output stringa: stampa / visualizza una stringa
La funzione printf standard viene utilizzata per stampare o visualizzare stringhe in C su un dispositivo di output. L'identificatore di formato utilizzato è% s
Esempio,
printf("%s", name);
L'output della stringa viene eseguito con le funzioni fputs () e printf ().
funzione fputs ()
Fputs () richiede il nome della stringa e un puntatore a dove si desidera visualizzare il testo. Usiamo stdout che si riferisce allo standard output per stampare sullo schermo, ad esempio:
#includeint main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}
Produzione:
Enter your town: New YorkNew York
mette la funzione
La funzione put viene utilizzata per stampare la stringa in C su un dispositivo di output e riportare il cursore nella prima posizione. Una funzione put può essere utilizzata nel modo seguente,
#includeint main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}
La sintassi di questa funzione è relativamente semplice rispetto ad altre funzioni.
La libreria di stringhe
La libreria 'C' standard fornisce varie funzioni per manipolare le stringhe all'interno di un programma. Queste funzioni sono chiamate anche come gestori di stringhe. Tutti questi gestori sono presenti nel file di intestazione
Funzione | Scopo |
strlen () | Questa funzione viene utilizzata per trovare la lunghezza di una stringa. Restituisce quanti caratteri sono presenti in una stringa escluso il carattere NULL. |
strcat (str1, str2) | Questa funzione viene utilizzata per combinare due stringhe insieme per formare una singola stringa. Aggiunge o concatena str2 alla fine di str1 e restituisce un puntatore a str1. |
strcmp (str1, str2) | Questa funzione viene utilizzata per confrontare due stringhe tra loro. Restituisce 0 se str1 è uguale a str2, minore di 0 se str1 |
Consideriamo il programma seguente che mostra le funzioni della libreria di stringhe:
#include#include int main () {//string initializationchar string1[15]="Hello";char string2[15]=" World!";char string3[15];int val;//string comparisonval= strcmp(string1,string2);if(val==0){printf("Strings are equal\n");}else{printf("Strings are not equal\n");}//string concatenationprintf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world!//string lengthprintf("\nLength of first string:%d",strlen(string1));printf("\nLength of second string:%d",strlen(string2));//string copyprintf("\nCopied string is:%s\n",strcpy(string3,string1)); //string1 is copied into string3return 0;}
Produzione:
Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied string is:Hello World!
Altre importanti funzioni della libreria sono:
- strncmp (str1, str2, n): restituisce 0 se i primi n caratteri di str1 sono uguali ai primi n caratteri di str2, minore di 0 se str1
str2. - strncpy (str1, str2, n) Questa funzione viene utilizzata per copiare una stringa da un'altra stringa. Copia i primi n caratteri di str2 in str1
- strchr (str1, c): restituisce un puntatore alla prima occorrenza di char c in str1, o NULL se il carattere non viene trovato.
- strrchr (str1, c): cerca str1 al contrario e restituisce un puntatore alla posizione di char c in str1, o NULL se il carattere non viene trovato.
- strstr (str1, str2): restituisce un puntatore alla prima occorrenza di str2 in str1, o NULL se str2 non viene trovato.
- strncat (str1, str2, n) Aggiunge (concatena) i primi n caratteri di str2 alla fine di str1 e restituisce un puntatore a str1.
- strlwr (): per convertire una stringa in minuscolo
- strupr (): per convertire la stringa in maiuscolo
- strrev (): per invertire la stringa
Conversione di una stringa in un numero
Nella programmazione C, possiamo convertire una stringa di caratteri numerici in un valore numerico per prevenire un errore di runtime. La libreria stdio.h contiene le seguenti funzioni per convertire una stringa in un numero:
- int atoi (str) Sta per ASCII su intero; converte str nel valore int equivalente. Viene restituito 0 se il primo carattere non è un numero o non vengono rilevati numeri.
- double atof (str) Sta per ASCII in float, converte str nell'equivalente valore double. Viene restituito 0,0 se il primo carattere non è un numero o non vengono rilevati numeri.
- long int atol (str) Sta per ASCII in long int, converte str nel valore intero lungo equivalente. Viene restituito 0 se il primo carattere non è un numero o non vengono rilevati numeri.
Il seguente programma mostra la funzione atoi ():
#includeint main(){char *string_id[10];int ID;printf("Enter a number: ");gets(string_id);ID = atoi(string_id);printf("you enter %d ",ID);return 0;}
Produzione:
Enter a number: 221348you enter 221348
- Una dichiarazione di puntatore a stringa come char * string = "language" è una costante e non può essere modificata.
Sommario
- Una stringa è una sequenza di caratteri memorizzata in una matrice di caratteri.
- Una stringa è un testo racchiuso tra virgolette doppie.
- Un carattere come "d" non è una stringa ed è indicato da virgolette singole.
- 'C' fornisce funzioni di libreria standard per manipolare le stringhe in un programma. I manipolatori di stringhe sono archiviati nel file di intestazione
. - Una stringa deve essere dichiarata o inizializzata prima di essere utilizzata in un programma.
- Esistono diverse funzioni di stringa di input e output, ognuna con le sue caratteristiche.
- Non dimenticare di includere la libreria di stringhe per lavorare con le sue funzioni
- Possiamo convertire una stringa in numero tramite atoi (), atof () e atol () che sono molto utili per i processi di codifica e decodifica.
- Possiamo manipolare stringhe diverse definendo un array di stringhe in C.