Vedremo oggi come concatenare due stringhe in C.
Supponiamo quindi di avere due stringhe:
“fare coding divertendosi è possibile” e “troverete esempi sul sito coding creativo”.
Vogliamo unirle per creare un’unica stringa.
Programma per concatenare due stringhe in C
Memorizziamo le due stringhe da unire in due array di caratteri:
char coding[80]=”fare coding divertendosi e’ possibile, “;
char sito[41]=”troverete esempi sul sito coding creativo”;
L’array coding dovrà contenere anche la seconda stringa che andrò ad aggiungere alla fine. Quindi la sua dimensione sarà prima stringa + seconda stringa + carattere terminatore. La prima stringa ha lunghezza 39, la seconda ha lunghezza 40 + \0. Quindi in totale dichiariamo char coding di 80 caratteri.
Dunque procediamo alla concatenazione.
Utilizzo un ciclo while che scorre l’array sito e termina quando incontra il carattere terminatore. A ogni nuova iterazione il valore della variabile i viene incrementato di 1. Quindi aggiunge ad uno ad uno ciascun carattere dell’array sito dopo il carattere terminatore dell’array coding. Infine, al termine aggiunge \0.
int j=0;
while(sito[j]!=’\0′)
coding[j+39]=sito[j++];
coding[j+39]=’\0′;
Sebbene questa notazione è più semplice sarebbe da preferire la notazione con il for in quanto ha prestazioni migliori.
for(j=0; (coding[j+39]=sito[j])!=’\0′; j++)
;
Questa infatti è una notazione che in linguaggio C viene utilizzata molto spesso.
Allego il listato completo del programma per concatenare due stringhe in C.
#include<stdio.h>
int main() {
int j;
char coding[79]="fare coding divertendosi e' possibile, ";
char sito[42]="troverete esempi sul sito coding creativo";
for(j=0; (coding[j+39]=sito[j])!='\0'; j++)
;
printf("%s",coding);
return 0;
}
Altro esempio di concatenazione tra due stringhe in C
Faccio un altro esempio di concatenazione, ma questa volta la seconda stringa la facciamo inserire da tastiera.
Quindi ad esempio pensiamo di prendere una stringa nome e di unirla alla stringa saluto.
char saluto[27]=”Ciao, mi chiamo “;
All’array nome assegniamo ad esempio un massimo di 11 caratteri, ipotizzando che un nome di una persona in genere non sia così lungo, chiaramente impostate voi in base alle vostre esigenze.
Dunque il nome lo facciamo inserire da tastiera ad esempio con quest’istruzione:
printf(“inserisci il nome: “);
scanf(“%s”, nome);
L’istruzione scanf inserirà la stringa inserita dall’utente nell’array nome.
Non conosciamo quanti caratteri esattamente ha la stringa nome, abbiamo solo impostato il limite a 11.
Adesso dobbiamo scorrere tutto l’array saluto fino al carattere terminatore:
int i=0;
while(saluto[i]!=’\0′)
i++;
in modo analogo si poteva utilizzare il ciclo for
for(i=0; (saluto[i])!=’\0′; i++)
;
Quando il ciclo sarà terminato i conterrà l’indice dell’elemento del vettore dove si trova il carattere terminatore.
Adesso dobbiamo aggiungere la stringa nome e per farlo utilizziamo questo ciclo:
int j=0;
while(nome[j]!=’\0′)
saluto[i++]=nome[j++];
saluto[i]=’\0′;
In modo analogo si poteva utilizzare il ciclo for:
for(j=0; (saluto[i]=nome[j])!=’\0′; i++, j++);
;
L’indice i scorre saluto, l’indice j scorre nome a partire dalla sua prima posizione fino al carattere terminatore.
Alla prima iterazione il carattere \0 della stringa saluto viene sostituito dal primo carattere della stringa nome e successivamente vengono aggiunti tutti gli altri caratteri. Alla fine viene aggiunto il carattere \0.
Allego sotto il listato completo del programma che concatena due stringhe in C
int main() {
int i,j;
char saluto[27]="Ciao, mi chiamo ";
char nome[11];
printf("inserisci il nome: ");
scanf("%s", nome);
for(i=0; (saluto[i])!='\0'; i++)
;
for(j=0; (saluto[i]=nome[j])!='\0'; i++, j++);
;
printf("%s",saluto);
return 0;
}
Libreria string.h
A questo punto vi posso presentare la funzione di libreria che si occupa di concatenare due stringhe in C.
Ebbene si, esistono delle funzioni che copiano o concatenano due stringhe in C, ma riuscire a farlo senza la funzione è importante per affinare il ragionamento e capire maggiormente come funzionano gli array.
La funzione della libreria string.h che si occupa di copiare una stringa in un’altra è:
strcpy (stringa1, stringa2);
In questo caso copierà la stringa2 su stringa 1.
La funzione che si occupa di copiare i primi n caratteri di una stringa in un’altra è:
strncpy (stringa1, stringa2, n);
In questo caso copierà n caratteri di stringa2 in stringa1.
La funzione che permette di concatenare due stringhe è:
strcat (stringa1, stringa2);
La funzione che consente di confrontare due stringhe è:
strcmp (stringa1, stringa2);
In questo caso confronta stringa1 con stringa2, se sono uguali viene restituito zero, se stringa1 è maggiore di stringa2 viene restituito un valore positivo, altrimenti viene restituito un valore negativo.
Seguitemi nel prossimo articolo vi darò alcuni esempi di come utilizzare le funzioni appena elencate.
Alcuni link utili:
Ricerca di un elemento in una matrice
Array o vettori in linguaggio C
Media dei numeri in un array in linguaggio C
Esempio di array con numeri random in C