Tableau de string en c

Le noob -  
ydurce Messages postés 81 Statut Membre -
Bonjour,
je souhaiterai créer un tableau de chaînes de caractères et ensuite travailler dessus en demandant aux utilisateurs de le remplir.
en fait ça serait quelque chose comme:
void entreNom(char *nom){
		printf("entrez le nom \n");
		scanf("%s",nom);
}
int main (int argc, const char * argv[]) {
char nom[3][20] ;
int i=0;
for(i=0;i<3;i++){
entreNom(nom[i][20]);
}
    return 0;
}

du coup nom contiendrait tous les noms des joueurs
mais évidemment ce que j'ai mis ne marche pas -_-'

A voir également:

1 réponse

ydurce Messages postés 81 Statut Membre 18
 
bonjour,

dans la fonction, mets un getchar() aprés le scanf pour être sur de vider le buffer clavier.
pour l'appel de la fonction, tu doit passer un pointeur sur un char (donc un char *) et ce que tu passes est un char .
nom[i] est un pointeur sur la chaine de caractére allant de nom[i][0] à nom[i][19].
donc tu doit appeler ta fonction comme çà: entreNom(nom[i]).

pense à limiter le nombre de caractére du scanf à 20 en écrivant
scanf("%20s",nom);

cdlt
1
fiddy Messages postés 11653 Statut Contributeur 1 847
 
D'accord avec toi, sauf pour le scanf.
Il faut mettre : scanf("%19s", nom) puisque la taille est de 20.
Cdlt,
0
ydurce Messages postés 81 Statut Membre 18
 
?
pourquoi?
20 assure un non débordement
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
20 assure un débordement d'au maximum 1 byte et le '\0' pour être précis.
Dans scanf, il faut mettre la taille maximale de la chaîne et laisser la place pour le caractère terminal.
0
ydurce Messages postés 81 Statut Membre 18
 
exact!
autant pour moi
0