Tableau c
Fermé
yaldoo
-
Modifié par yaldoo le 9/12/2011 à 15:24
Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020 - 10 déc. 2011 à 20:26
Char Snipeur Messages postés 9688 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 2 octobre 2020 - 10 déc. 2011 à 20:26
A voir également:
- Tableau c
- Tableau croisé dynamique - Guide
- Afficher un tableau en c - Forum C
- Tableau ascii - Guide
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Bureautique
- Tableau word - Guide
3 réponses
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
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
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
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
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
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 !