Comment faire insérer du 'char' dans un tableau de 'double'
felisk
Messages postés5Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention29 avril 2004
-
13 avril 2004 à 17:33
felisk
Messages postés5Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention29 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
ensiame
Messages postés15Date d'inscriptionmercredi 10 mars 2004StatutMembreDernière intervention15 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.
felisk
Messages postés5Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention29 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