Tableau c
Fermé
yaldoo
-
Modifié par yaldoo le 9/12/2011 à 15:24
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 10 déc. 2011 à 20:26
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 10 déc. 2011 à 20:26
A voir également:
- Tableau c
- Tableau croisé dynamique - Guide
- Code ascii tableau - Guide
- Tableau word - Guide
- Trier tableau excel - Guide
- Le nom du champ de tableau croisé dynamique n'est pas valide ✓ - Forum Excel
3 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 déc. 2011 à 15:29
9 déc. 2011 à 15:29
C'est impossible, tu ne peux pas dimensionner un tableaux si tu ne connais pas sa taille. Il faut faire un malloc entre l'acquisition du nombre et la boucle for.
il faudrait donc selon toi faire un
char **tableau = malloc(sizeof(char)*nombre);au debut et ensuite faire un realloc connaissant la taille du mot apres le scanf?
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 déc. 2011 à 15:52
9 déc. 2011 à 15:52
presque :
char **tableau = malloc(sizeof(char*)*nombre);
Dans un premire temps oui. ça serait tout de même plus propre qu'un tableau d'une taille arbitraire. Ensuite, forcément il faut aussi allouer chaque case de ton tableau. Par contre, là, tu ne peut pas savoir à l'avance. Je me demande s'il n'y a pas une foinction comme fget ou gets qui permet d'allouer un tableau de la taille de ce qui est lu directement.
char **tableau = malloc(sizeof(char*)*nombre);
Dans un premire temps oui. ça serait tout de même plus propre qu'un tableau d'une taille arbitraire. Ensuite, forcément il faut aussi allouer chaque case de ton tableau. Par contre, là, tu ne peut pas savoir à l'avance. Je me demande s'il n'y a pas une foinction comme fget ou gets qui permet d'allouer un tableau de la taille de ce qui est lu directement.
en faite voici le programme que je souhaite faire.Ce code marche mais me renvoi des warning a la compilation.Tu peux le tester.Par contre si tu entre un nom qui fait plus de 4 caractères ça te renvoi des valeur fausse.Pourrais tu m'aider a pallier a ce problème?
je voudrais stocker les noms des traders dans un tableau et les noms des produits dans un autre ensuite les afficher pour tester.
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char **argv){ int nombre_produit=0; int nombre_traders=0; printf("Quel est le nombre de produits sur le marché : \n"); scanf("%d",&nombre_produit); printf("le nombre de produits est donc :%d \n",nombre_produit); char **nom_produit=malloc(sizeof(char)*200); int i=0; for(i=0;i<nombre_produit;i++){ //boucle pour stocker le nom des produits dans un tableau printf("nom du produit n°%d: \n",i+1); scanf("%s",&nom_produit[i]); } printf("Quel est le nombre de traders : \n"); scanf("%d",&nombre_traders); char **nom_traders=malloc(sizeof(char)*200); for(i=0;i<nombre_traders;i++){ //boucle pour stocker le nom des traders dans un tableau printf("nom du trader n°%d: \n",i+1); scanf("%s",&nom_traders[i]); } printf("test des données saisi par l'utilisateur\n"); for(i=0;i<nombre_traders;i++){ printf("traders n°%d:%s \n",i+1,&nom_traders[i]); } for(i=0;i<nombre_produit;i++){ printf("produit n°%d:%s \n",i+1,&nom_produit[i]); } }
je voudrais stocker les noms des traders dans un tableau et les noms des produits dans un autre ensuite les afficher pour tester.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
10 déc. 2011 à 20:26
10 déc. 2011 à 20:26
Les réponses sont dans mon messages précédent. Dans malloc, c'est char* ! et il faut faire un malloc pour chaque case !