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

felisk Messages postés 5 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 29 avril 2004 - 13 avril 2004 à 17:33
felisk Messages postés 5 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 29 avril 2004 - 14 avril 2004 à 15:14
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

ensiame Messages postés 15 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 15 décembre 2005
14 avril 2004 à 12:46
À 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.
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
14 avril 2004 à 14:18
le mieux serait peut-etre d'utiliser une structure
typedef struct mon_tableau
{
char description[TAILLE_COMMENTAIRE];
double leTableau[TAILLE_TABLEAU];
} monTableau;

0
felisk Messages postés 5 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 29 avril 2004
14 avril 2004 à 15:14
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
0
Rejoignez-nous