Erreur prog tableau en C

Résolu
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à :
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:

2 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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,
0
Joli Jumpeur
 
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 :
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
0