Comment faire insérer du 'char' dans un tableau de 'double'

Signaler
Messages postés
5
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
29 avril 2004
-
Messages postés
5
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
29 avril 2004
-
J'ai créé un tableau où je stocke des valeurs de type 'double', j'aimerai dans les prières ligne de ce tableau insérer quelques lignes de commentaires de type 'char'.
Mon tableau a été préalablement initialisé avec la fonction malloc de type 'double'.
Merci de pouvoir me dépanner

3 réponses

Messages postés
15
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
15 décembre 2005

À la base, le C/C++ ne t'autorise pas à mélanger les types de donnée contenus dans un tableau, car il a besoin de connaître en permanence le type des objets utilisés (sauf dans le cas du polymorphisme, mais ce n'est pas ce qui nous intéresse en ce moment). Donc sur le principe, ce que tu souhaites faire n'est pas autorisé.

Si tu tiens vraiment à utiliser les premiers éléments du tableau pour y mettre du commentaire, il y a deux solutions:
-la première consiste à stocker tes caractères dans le tableau de doubles. La conversion de char en double sera faite automatiquement. Par contre il te faudra écrire des méthodes pour remplacer les fonctions de chaînes de caractères, car tu ne pourras y accéder qu'à l'unité (à moins de jouer avec la taille des données et de stocker plusieurs caractères là où tu étais censé mettre un double).
-la deuxième solution, qui serait celle que j'utiliserais, consiste à "stocker" ton commentaire dans le premier élément de ton tableau de double. Ton commentaire étant de type char* (dans le cas de chaînes C standard), il te suffit de stocker le pointeur dans le premier élément pour pouvoir accéder à la chaîne à coups de transtypages.

double* TableauDeDoubles = (double*) malloc (taille * sizeof(double));
char Commentaire[20] = "Chaîne C usuelle";
TableauDeDoubles[0] = (double) Commentaire; // Conversion en double du pointeur sur char, que l'on stocke dans le premier élément du tableau.
...
int i = strlen((char*) TableauDeDoubles[0]); // Conversion en char* du double, pour l'utiliser en tant que chaîne de caractères.

ATTENTION!
Ceci n'est valable que si le type de données contenu dans ton tableau (ici des doubles) est de taille au moins égale à la taille d'un pointeur. Dans le cas contraire, tu auras des pertes d'information conduisant dans le meilleur des cas à un plantage.
Messages postés
398
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
15 juin 2007
2
le mieux serait peut-etre d'utiliser une structure
typedef struct mon_tableau
{
char description[TAILLE_COMMENTAIRE];
double leTableau[TAILLE_TABLEAU];
} monTableau;

Messages postés
5
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
29 avril 2004

je vais tenter la 2ème solution, elle est plus de mon niveau, ca me parait plus facile. En fait je connaissait pas la fonction 'typedef', si ca marche c'est vraiment cool. Merci encore de passer du temps pour les débutants du C