nikpez di nikpez
Ominide 738 punti

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 <string.h>
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;
}

Registrati via email