Erreur prog tableau en C

Résolu/Fermé
Joli Jumpeur - Modifié par Joli Jumpeur le 15/01/2011 à 16:10
 Joli Jumpeur - 15 janv. 2011 à 16:12
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
15 janv. 2011 à 16:08
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
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