Saisir un tableau

programmation -  
 Utilisateur anonyme -
Bonjour,
ce programme là ne me donne pas un résultat correct
void tab (int *tab2, int nb)
{
int i;
for (i = 1; i <= nb; i++)
{printf (" entrer les elements de la base \n", tab2[i]);
scanf ("%d", &tab2[i]);
}
}
int main ()
int x[4],n;
printf("entrer le nombre des elements de x \n ",n);
scanf("%d\n",&n);
tab(x,n);
}
A voir également:

2 réponses

Pierre1310 Messages postés 8564 Date d'inscription   Statut Membre Dernière intervention   651
 
Bonjour,

scanf ("%d", &tab2[i]); pas de & pour la cellule d'un tableau.
0
Utilisateur anonyme
 
Bonsoir.
Lorsqu'il s'agit d'un nombre, si, on met bien &.
Par contre, dans ce cas, on ne le met pas :

char tab[100];
printf("Entrez du texte : ");
scanf("%s", tab);
printf("Voici le texte entre : %s", tab);


Bien sur cet exemple n'est pas le meilleur car il est déconseillé d'utiliser scanf lorsqu'on rentre une chaîne de caractère, cela peut créer plusieurs problèmes, par exemple on ne pourra pas écrire un texte avec des espaces, on verra du dépassement de mémoire etc, la meilleure syntaxe serait
fgets(tab, 100, stdin);
c'est la saisie de texte sécurisée

Et petite remarque pour l'auteur, ton main ne renvoie rien ?
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846 > Utilisateur anonyme
 
Hello,

Si si, on peut mettre des espaces avec scanf et on peut limiter la taille.
Par exemple : scanf("%99[^\n]", tab);

Cdlt,
0
Utilisateur anonyme
 
fiddy,

On peut faire cela que en C99 non ?
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Non, en C89/90 :-).
0
Utilisateur anonyme
 
J'apprend quelque chose, merci !
Mais avec scanf, même avec cette syntaxe, le reste de la chaîne entrée (si elle dépasse la taille) ne sera pas enregistrée dans le buffer ? Elle sera vidée ?
0
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
Bonjour,
il faut bien le & pour un élément de tableau.
Par contre ne mets pas de "\n" dans un scanf()
Et les indices de tableau commencent à 0 pas à 1.
Donc
void tab (int *tab2, int nb) 
{ 
    int i; 
    for (i = 0; i < nb; i++) 
    {
        printf( "entrer l'element de la base %d\n" , i+1 ); 
        scanf( "%d" , &tab2[i] ); 
    }
} 

int main ()
{ 
    int x[4] , n; 
    printf( "entrer le nombre d'elements de x\n " ); 
    scanf( "%d" , &n );
    if ( n <= 4 ) 
        tab(x,n);
    else
        printf("Nombre d'elements trop important\n");
}
0