Declarer un tableau de type inconnu
etudiantinfo
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
bonjour !
je veux savoir comment déclarer un tableau si on sait pas quoi il va contenir( on sait pas si l'utilisation va entrer des entiers ou des floats ,des caractères ....) .est ce que c'est malloc(sizeof()) qui fait ca ?
je veux savoir comment déclarer un tableau si on sait pas quoi il va contenir( on sait pas si l'utilisation va entrer des entiers ou des floats ,des caractères ....) .est ce que c'est malloc(sizeof()) qui fait ca ?
A voir également:
- Declarer un tableau de type inconnu
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Numero inconnu - Guide
- Imprimer un tableau excel - Guide
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, peux-tu nous en dire plus sur l'utilisation de ce tableau? tous les éléments seront-ils du même type? comment le programme saura-t'il quel type d'élément est enregistré?
etudiantinfo
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
je voulais dire "l'utilisateur" .oui les elements sont du meme type mais c'est l'utilisateur qui va entrer ces elements donc on ne sait pas d'avance si il va entrer par ex des nombres ou des caracteres ou ....etc. generalement on declare le tableau sous la forme "type T[taille du tableau]; "mais la on ne sait pas le type :/
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
1 584
>
etudiantinfo
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
moi je déclarerais plusieurs tableaux, un de chaque type, sans leur allouer de la mémoire. Ensuite, au moment où le type choisi par l'utilisateur est connu, j'allouerais la mémoire requise pour le tableau utilisé.
etudiantinfo
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
j'ai pas compris! pouvez-vous me donner un exemple?
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
1 584
>
etudiantinfo
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
peux-tu partager ton code?
Salut etudiantinfo,
J'ajouterai aux éléments de réponse de yg_be que si tu dois récupérer une saisie au clavier sans savoir quel type de données l'utilisateur va saisir, tu n'as pas d'autre choix que de récupérer dans un premier temps la saisie comme une chaîne de caractères (avec fgets), que tu pourras toujours traiter pour la vérifier, convertir (par exemple avec strtol et strtod) et stocker selon le type attendu et utile au programme.
http://www.cplusplus.com/reference/cstdlib/strtol/
http://www.cplusplus.com/reference/cstdlib/strtod/
Pour le stockage, outre les solutions proposées par yg_be, tu peux par exemple utiliser une union pour stocker dans un espace mémoire réservé par le programme des éléments de types différents.
Vois : https://c.developpez.com/cours/bernard-cassagne/node95.php
Il y a des solutions manuelles à base de void * et de casts, mais il faut vraiment savoir ce que l'on fait et aimer avoir des parenthèses dans tous les sens et on peut vite tomber dans des comportements indéfinis ou des incohérences.
Sinon, ta question est vague, semble avoir plusieurs facettes et peut être interprétée de plusieurs façons. Le code que tu fais et sur lequel tu bloques nous donnerait le contexte exact de ton problème, et te permettrait de formuler ta question sous une forme précise et non théorique et d'obtenir une réponse directe.
Poste un exemple de ton code illustrant ton problème !
Dal
J'ajouterai aux éléments de réponse de yg_be que si tu dois récupérer une saisie au clavier sans savoir quel type de données l'utilisateur va saisir, tu n'as pas d'autre choix que de récupérer dans un premier temps la saisie comme une chaîne de caractères (avec fgets), que tu pourras toujours traiter pour la vérifier, convertir (par exemple avec strtol et strtod) et stocker selon le type attendu et utile au programme.
http://www.cplusplus.com/reference/cstdlib/strtol/
http://www.cplusplus.com/reference/cstdlib/strtod/
Pour le stockage, outre les solutions proposées par yg_be, tu peux par exemple utiliser une union pour stocker dans un espace mémoire réservé par le programme des éléments de types différents.
Vois : https://c.developpez.com/cours/bernard-cassagne/node95.php
Il y a des solutions manuelles à base de void * et de casts, mais il faut vraiment savoir ce que l'on fait et aimer avoir des parenthèses dans tous les sens et on peut vite tomber dans des comportements indéfinis ou des incohérences.
Sinon, ta question est vague, semble avoir plusieurs facettes et peut être interprétée de plusieurs façons. Le code que tu fais et sur lequel tu bloques nous donnerait le contexte exact de ton problème, et te permettrait de formuler ta question sous une forme précise et non théorique et d'obtenir une réponse directe.
Poste un exemple de ton code illustrant ton problème !
Dal