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 stringaUna 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.
Sfida
FacileScrivi un programma C che mostri la concatenazione di stringhe usando la funzione strcat() per creare messaggi personalizzati. Il tuo programma deve:
- Leggere un intero
nche rappresenta il numero di persone da elaborare - Per ogni persona:
- Leggere il nome dall'input
- Leggere il cognome dall'input
- Creare un array di caratteri chiamato
fullNamecon 100 elementi - Usare
strcpy()per copiare il nome infullName - Usare
strcat()per aggiungere uno spazio " " afullName - Usare
strcat()per aggiungere il cognome afullName - Creare un array di caratteri chiamato
greetingcon 150 elementi - Usare
strcpy()per copiare "Hello, " ingreeting - Usare
strcat()per aggiungerefullNameagreeting - Usare
strcat()per aggiungere "! Welcome to our program." agreeting - Stampare il messaggio di saluto finale
- Dopo aver elaborato tutte le persone, creare un messaggio riepilogativo:
- Creare un array di caratteri chiamato
summarycon 100 elementi - Usare
strcpy()per copiare "Total people processed: " insummary - Convertire il numero
nin una stringa e usarestrcat()per aggiungerla asummary - Stampare il messaggio riepilogativo
- Creare un array di caratteri chiamato
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
SmithL'output deve essere:
Hello, John Doe! Welcome to our program.
Hello, Alice Smith! Welcome to our program.
Total people processed: 2Questa 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;
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Fondamenti dei puntatori
Che cos’è un puntatore?Dichiarare i puntatoriL’operatore di indirizzo (&)L’operatore di dereferenziazione (*)Puntatori NULLRiepilogo: nozioni di base sui puntatori4Progetto: Utility di testo semplice
Panoramica del progettoConteggio dei caratteri2Puntatori e array
I nomi degli array come puntatoriElementi degli array e puntatoriAritmetica dei puntatoriConfrontare i puntatoriRiepilogo: attraversamento di un array con i puntatori5Puntatori e funzioni
Passaggio per valorePassare puntatori alle funzioniModificare le variabili tramite puntatoriUn esempio classico: scambiare valoriPassare array alle funzioniRiepilogo: argomenti puntatore nelle funzioni3Array di caratteri e stringhe
Stringhe come array di charIl terminatore nullInput di stringhe con scanfUso di strlen()Uso di strcpy()Uso di strcat()Uso di strcmp()Riepilogo: funzioni di base per le stringhe6Gestione della memoria
Memoria Stack vs. HeapAllocazione dinamica - malloc()Usare sizeof() per l'allocazioneVerificare il fallimento dell'allocazioneLiberare la memoria con free()Allocare con calloc()Riepilogo: array dinamico9Progetto: Inserimento semplice di un contatto
Progetto: Definire una struct ContattoFunzione per creare un contattoEsercitati da solo: Compilatore C online