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

typedef struct { int num_tel, nbr_appel, cout; } Client;

Client* initClient(int num_tel, int nbr_appel, int cout);
Client* createData();

#define NBCLIENT 20

Client* initClient(int num_tel, int nbr_appel, int cout)
{
  Client *pClient = malloc(sizeof (Client));
  /** @bug check for NULL pointer missing! */
  pClient->num_tel = num_tel;
  pClient->nbr_appel = nbr_appel;
  pClient->cout = cout;
  return pClient;
}

Client* createData()
{
  Client *clients = malloc(NBCLIENT * sizeof (Client));
  /** @bug check for NULL pointer missing! */
  for (int i = 0; i < NBCLIENT; ++i) {
    int numeroTel = 600000000 + (rand() % NBCLIENT);
    int prixAppel = (rand() % 400) + 1;
    Client *pClient = initClient(numeroTel,1,prixAppel);
    /* copy returned CONTENTS to malloc-ed array element */
    clients[i] = *pClient; /* assignment for struct-s is granted */
    /* release pClient to prevent memory leaks - it's not anymore needed */
    free(pClient);
  }
  return clients;
}

int main()
{
  Client *clients = createData();
  for (int i = 0; i < NBCLIENT; ++i) {
    Client *pClient = clients + i; /* or: &clients[i] would work as well */
    printf("%2d.: %d, %d, %d\n",
      i, pClient->num_tel, pClient->nbr_appel, pClient->cout);
  }
  free(clients);
  return 0;
}
