Menu
Coddy logo textTech

Uso di strcat()

Fa parte della sezione Logica e flusso del percorso C di Coddy. Lezione 17 di 63.

Hai imparato a copiare le stringhe con strcpy(), ma cosa succede se vuoi unire due stringhe? Questa operazione si chiama concatenazione e C mette a disposizione la funzione strcat() della libreria <string.h> a questo scopo.

La funzione strcat() aggiunge il contenuto di una stringa alla fine di un'altra stringa. Accetta due argomenti: la stringa di destinazione (che verrà modificata) e la stringa sorgente (che verrà aggiunta alla fine).

#include <stdio.h>
#include <string.h>

char greeting[20] = "Hello";
char name[] = " World";
strcat(greeting, name);  // greeting ora contiene "Hello World"

È fondamentale che la stringa di destinazione abbia spazio sufficiente per contenere sia il contenuto originale sia il nuovo contenuto aggiunto. La funzione strcat() trova il terminatore nullo nella stringa di destinazione, lo rimuove, copia la stringa sorgente in quella posizione e aggiunge un nuovo terminatore nullo alla fine.

A volte devi concatenare un numero (come un int) a una stringa. Poiché strcat() funziona solo con gli array di caratteri, devi prima convertire il numero in una stringa. Puoi farlo con sprintf(), che funziona proprio come printf(), ma scrive il risultato formattato in un array di caratteri invece di stamparlo sullo schermo. sprintf() fa parte di <stdio.h>, già incluso nella maggior parte dei programmi C.

int n = 42;
char numStr[20];
sprintf(numStr, "%d", n);  // numStr ora contiene "42" come stringa

Una volta memorizzato il numero come stringa in numStr, puoi usare strcat() per aggiungerlo a un’altra stringa come al solito:

char summary[100] = "Total people processed: ";
int n = 3;
char numStr[20];
sprintf(numStr, "%d", n);
strcat(summary, numStr);  // summary ahora contiene "Total people processed: 3"

Questa funzione è essenziale per creare stringhe più lunghe a partire da pezzi più piccoli, ad esempio per formare frasi complete con parole singole o combinare l'input dell'utente con testo predefinito.

challenge icon

Sfida

Facile

Scrivi un programma C che mostri la concatenazione di stringhe usando la funzione strcat() per creare messaggi personalizzati. Il tuo programma deve:

  1. Leggere un intero n che rappresenta il numero di persone da elaborare
  2. Per ogni persona:
    • Leggere il nome dall'input
    • Leggere il cognome dall'input
    • Creare un array di caratteri chiamato fullName con 100 elementi
    • Usare strcpy() per copiare il nome in fullName
    • Usare strcat() per aggiungere uno spazio " " a fullName
    • Usare strcat() per aggiungere il cognome a fullName
    • Creare un array di caratteri chiamato greeting con 150 elementi
    • Usare strcpy() per copiare "Hello, " in greeting
    • Usare strcat() per aggiungere fullName a greeting
    • Usare strcat() per aggiungere "! Welcome to our program." a greeting
    • Stampare il messaggio di saluto finale
  3. Dopo aver elaborato tutte le persone, creare un messaggio riepilogativo:
    • Creare un array di caratteri chiamato summary con 100 elementi
    • Usare strcpy() per copiare "Total people processed: " in summary
    • Convertire il numero n in una stringa e usare strcat() per aggiungerla a summary
    • Stampare il messaggio riepilogativo

Ricorda di includere l'header <string.h> per usare le funzioni per le stringhe.

L'output deve mostrare i risultati nel seguente formato:

Hello, [FirstName LastName]! Welcome to our program.
Hello, [FirstName LastName]! Welcome to our program.
...
Total people processed: [n]

Per esempio, se l'input è:

2
John
Doe
Alice
Smith

L'output deve essere:

Hello, John Doe! Welcome to our program.
Hello, Alice Smith! Welcome to our program.
Total people processed: 2

Questa sfida verifica la tua comprensione dell'uso di strcat() per concatenare più stringhe, combinandolo con strcpy() per impostare la stringa iniziale e creare stringhe complesse a partire da più componenti, un passaggio alla volta.

Provalo tu

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
    // Leggi il numero di persone
    int n;
    scanf("%d", &n);
    
    // TODO: Scrivi il tuo codice qui sotto
    // Elabora ogni persona e crea messaggi di saluto
    // Poi crea e visualizza il messaggio riepilogativo
    
    return 0;
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C online