Saisir un tableau

Fermé
programmation - 4 mars 2016 à 12:10
 Utilisateur anonyme - 5 mars 2016 à 22:55
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 lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 649
4 mars 2016 à 12:12
Bonjour,

scanf ("%d", &tab2[i]); pas de & pour la cellule d'un tableau.
0
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844 > Utilisateur anonyme
5 mars 2016 à 22:32
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
5 mars 2016 à 22:35
fiddy,

On peut faire cela que en C99 non ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
5 mars 2016 à 22:35
Non, en C89/90 :-).
0
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 dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
4 mars 2016 à 21:31
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