Menu
Coddy logo textTech

Uso di strcpy()

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

Hai imparato a trovare la lunghezza delle stringhe con strlen(), ma cosa succede se devi copiare il contenuto di una stringa in un'altra? In C, non puoi usare l'operatore di assegnazione (=) per copiare le stringhe come faresti con le normali variabili.

Il motivo è che le stringhe sono array di caratteri e, quando usi = con gli array, copi solo l'indirizzo di memoria, non il contenuto effettivo. È qui che diventa essenziale la funzione strcpy() della libreria <string.h>.

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

char source[] = "Hello";
char destination[20];
strcpy(destination, source);  // Copia "Hello" in destination

La funzione strcpy() accetta due argomenti: l’array di destinazione (dove vuoi copiare) e la stringa sorgente (ciò che vuoi copiare). Copia ogni carattere dalla sorgente alla destinazione, incluso il terminatore nullo.

È fondamentale che l'array di destinazione sia abbastanza grande da contenere l'intera stringa sorgente più il terminatore nullo. Se la destinazione è troppo piccola, strcpy() scriverà oltre i limiti dell'array, causando un comportamento indefinito.

Questa funzione è fondamentale per la manipolazione delle stringhe in C: ti permette di duplicare le stringhe, inizializzare le variabili stringa con contenuti esistenti e preparare le stringhe per ulteriori elaborazioni.

challenge icon

Sfida

Facile

Scrivi un programma in C che dimostri la copia di stringhe usando la funzione strcpy(). Il tuo programma dovrebbe:

  1. Leggere un intero n che rappresenta il numero di operazioni sulle stringhe da eseguire
  2. Per ogni operazione:
    • Leggere una stringa sorgente dall'input
    • Dichiarare un array di caratteri chiamato destination con 100 elementi
    • Usare strcpy() per copiare la stringa sorgente nell'array di destinazione
    • Stampare sia la stringa sorgente originale sia la stringa di destinazione copiata
  3. Dopo tutte le operazioni, dimostrare che le stringhe copiate sono indipendenti:
    • Modificare il primo carattere dell'ultimo array di destinazione in 'X'
    • Stampare la stringa di destinazione modificata per mostrare che è cambiata

Ricorda di includere l'header <string.h> per usare la funzione strcpy().

Il tuo output dovrebbe mostrare i risultati nel seguente formato:

Source: [source_string]
Destination: [copied_string]
Source: [source_string]
Destination: [copied_string]
...
Modified last destination: [modified_string]

Per esempio, se l'input è:

3
hello
world
programming

Il tuo output dovrebbe essere:

Source: hello
Destination: hello
Source: world
Destination: world
Source: programming
Destination: programming
Modified last destination: Xrogramming

Questa sfida mette alla prova la tua comprensione dell'uso di strcpy() per copiare il contenuto di una stringa da un array di caratteri a un altro, della corretta allocazione della memoria per gli array di destinazione e dimostra che le stringhe copiate sono indipendenti dalle loro sorgenti.

Provalo tu

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

int main() {
    int n;
    scanf("%d", &n);
    
    char source[100];
    char destination[100];
    
    // TODO: Scrivi qui il tuo codice
    // Usa un ciclo per elaborare n operazioni sulle stringhe
    // Per ogni operazione:
    // - Leggi la stringa source
    // - Usa strcpy() per copiare source in destination
    // - Stampa entrambe le stringhe nel formato richiesto
    
    // TODO: Dopo il ciclo, modifica il primo carattere dell'ultima destination
    // e stampa la stringa modificata
    
    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