Tableau c
yaldoo
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je souhaite faire un petit programme qui demande à l'utilisateur d'entrer des noms et de les stocker par la suite dans un tableau pour ensuite les afficher.
pour les afficher je fais une boucle for mais elle me renvoi souvent des erreurs de segmentation.
Je voulais savoir aussi comment déclarer mon tableau au debut du programme.
Merci
je souhaite faire un petit programme qui demande à l'utilisateur d'entrer des noms et de les stocker par la suite dans un tableau pour ensuite les afficher.
printf("combien de noms voulez-vous stocker ? \n"); scanf("%d",nombre); for(i=0;i<nombre;i++){ printf("nom n°%d \n",i+1); scanf("%s",tab[i]); }
pour les afficher je fais une boucle for mais elle me renvoi souvent des erreurs de segmentation.
Je voulais savoir aussi comment déclarer mon tableau au debut du programme.
Merci
A voir également:
- Tableau c
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
3 réponses
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?
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.