Envoyé par
nicodn02
sinon, je pense que j'opterais pour le coup du buffeur
Cependant, je n'est pas très bien compris:
1/ je déclare le buf de taille 20 et je fais pointer nom dessus
mais apres pourquoi je fais un fgets sur nom
??
j'aurais penser plutot a faire un fgets sur le buf puis de supprimer le "\n" et de faire un malloc sur nom
1 2
|
nom=(char *)malloc(sizeof(char)*strlen(buf)); |
suivit d'un :
non?
Attention, il est déconseillé de caster la valeur retournée par malloc(), De plus, il te faut allouer un espace mémoire pour strlen(buf) + 1 caractères (il faut de la place pour le caractère nul de fin de chaine). sizeof (char) vaut 1 par définition. Il est donc inutile de le préciser. Je conseille d'écrire:
nom = malloc(sizeof *nom * (strlen(buf) + 1));
Envoyé par
Melem
Si tu veux créer ton tableau dynamiquement, alors tu utilises malloc.
1 2 3 4 5 6
| char * nom = malloc(100);
...
printf("Entrer nom: ");
scanf("%s", nom);
...
free(nom); |
scanf("%s",...) est une des pires utilisations qu'on puisse faire de cette fonction. Essayons d'éviter de l'utiliser dans les exemples alors que le titre du fil fait mention de fgets().
Thierry
Partager