Erreur prog tableau en C
Résolu
Joli Jumpeur
-
Joli Jumpeur -
Joli Jumpeur -
Bonjour,
j'ai fait un programme, censé demander à l'utilisateur d'entrer la valeur de chaque "case" d'un tableau, puis afficher les valeurs sous la forme tab[0] | tab[1] | ... | tab[n].
Le voilà :
mais celui-ci ne fonctionne pas. La console m'affiche "Choisissez la taille du tableau : " puis je peux entrer la valeur, et il plante... L'exécutable s'arrête de fonctionner...
Vous auriez une idée de pourquoi??
merci à vous !
j'ai fait un programme, censé demander à l'utilisateur d'entrer la valeur de chaque "case" d'un tableau, puis afficher les valeurs sous la forme tab[0] | tab[1] | ... | tab[n].
Le voilà :
void afftab() { int size; printf("Choisissez la taille du tableau :"); scanf("%d",size); int tab[size]; int i; for (i=0;i<size;i++) { printf("Entrez la %d e valeur : ",i); scanf("%d",&tab[i]); } printf("%d",tab[0]); for (i=1;i<(size-1);i++) { printf(" %d |", tab[i]); } printf("%d",tab[(size-1)]); }
mais celui-ci ne fonctionne pas. La console m'affiche "Choisissez la taille du tableau : " puis je peux entrer la valeur, et il plante... L'exécutable s'arrête de fonctionner...
Vous auriez une idée de pourquoi??
merci à vous !
A voir également:
- Erreur prog tableau en C
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
2 réponses
scanf("%d",size);
Il faut mettre l'adresse de size => scanf("%d",&size).
int tab[size];
C'est correct avec la nouvelle norme, mais pas sûr que ton compilateur accepte cette norme. En plus des fois, il faut l'activer. Donc ça complique.
Je te conseille d'utiliser la façon classique avec int *tab;
Puis après scanf, tab=malloc(size*sizeof(int));
Et tout à la fin de ta fonction, free(tab), tab=NULL;
Cdlt,
Il faut mettre l'adresse de size => scanf("%d",&size).
int tab[size];
C'est correct avec la nouvelle norme, mais pas sûr que ton compilateur accepte cette norme. En plus des fois, il faut l'activer. Donc ça complique.
Je te conseille d'utiliser la façon classique avec int *tab;
Puis après scanf, tab=malloc(size*sizeof(int));
Et tout à la fin de ta fonction, free(tab), tab=NULL;
Cdlt,
Ah oui, c'était tout simplement le scanf !! Et pourtant, l'IDE que j'utilise (Code::Blocks) ne m'en a pas informé ...
maintenant j'ai :
ET CA MARCHE !! =)
Merci beaucoup, ça faisait 15min que je cherchais désespérément !
A bientôt
maintenant j'ai :
void afftab() { int size; printf("Choisissez la taille du tableau :"); scanf("%d",&size); int tab[size]; int i; for (i=0;i<size;i++) { printf("Entrez la %de valeur : ",i+1); scanf("%d", &tab[i]); } for (i=0;i<(size-1);i++) { printf("%d | ", tab[i]); } printf("%d",tab[(size-1)]); }
ET CA MARCHE !! =)
Merci beaucoup, ça faisait 15min que je cherchais désespérément !
A bientôt