Video appunto: Esercizo C - Funzioni,stringhe e allocazione dinamica
Esercizo C - Funzioni,stringhe e allocazione dinamica


Data la dichiarazione del record che definisce un prodotto:
typedef struct{
int codice;
char *nome;
float prezzo;
int numPezzi;
}prodotto;
Si scriva una funzione in grado di copiare il contenuto di una struttura in un’altra, duplicando la stringa
nome.
La struttura destinazione viene ricevuta per indirizzo, mentre la sorgente viene ricevuta per
valore.

void copiaProdottop(prodotto * dst, prodotto src)
{
*dst = src; //assegnazione diretta fra record
dst nome = strdup(src.nome);
}

La funzione strdup()
#include
char *strdup(const char *s);
Description
Copies a string into a newly created location.
strdup makes a duplicate of string s, obtaining space with a call to malloc. The allocated space
is (strlen(s) + 1) bytes long. The user is responsible for freeing the space allocated by strdup
when it is no longer needed.
Return Value
strdup returns a pointer to the storage location containing the duplicated string, or returns
null if space could not be allocated.
Codifica la funzione strdup()

char *strdup(const char *s)
{
char *p;
p = (char*)malloc(strlen(s) + 1); // p = new char [strlen(s) + 1];
if (p != NULL)
strcpy(p,s);
return p;
}