Tout mais pas gets! - C - Programmation
Marsh Posté le 17-02-2007 à 16:00:55
tu n'as pas trouvé fgets(buf, sizeof buf, stdin) ?
D'autre part réfléchis un peu pourquoi ton code sucre la première lettre de la saisie.
Marsh Posté le 17-02-2007 à 16:18:03
oui, c'est bon, j'ai trouvé, comme un gros c**. Pour vider le buffer, j'ai fait un
while(getchar()=='\n');
au lieu de
while(getchar()!='\n');
ça marche maintenant
et sinon, non, je ne connaissais pas fgets
Marsh Posté le 17-02-2007 à 19:17:15
liouan a écrit : pour l'instant, je fais:
|
Et si tu faisais plutôt :
Code :
|
???
Marsh Posté le 17-02-2007 à 20:59:32
Sve@r a écrit : Et si tu faisais plutôt :
|
D'ailleur si on fait:
Code :
|
On obtient bien une allocation de 50 avec la libération des 50 autres?
Marsh Posté le 17-02-2007 à 21:40:07
Non, ca veut juste dire que tu prends l'élément en position 50 de ton tableau.
Marsh Posté le 18-02-2007 à 01:20:10
ngkreator a écrit :
|
Je crois qu'avant de te couper un doigt ou une oreille, tu devrais apprendre à manier le C avec précaution...
Marsh Posté le 18-02-2007 à 08:41:15
Emmanuel Delahaye a écrit : Je crois qu'avant de te couper une doigt ou une oreille, tu devrais apprendre à manier le C avec précaution... |
Quand j'y repense c'était idiot
Marsh Posté le 18-02-2007 à 10:43:21
ngkreator a écrit : D'ailleur si on fait:
|
Marsh Posté le 17-02-2007 à 15:38:11
Bonjour tout le monde,
home/liouan/P2_Denoyelle/code_linux/main_etu.c:175: AVERTISSEMENT: the `gets' function is dangerous and should not be used.
j'ai un problème pour lire une chaïne de caractères au clavier. J'explique:
j'ai un projet dans lequel je dois implémenter une fonction qui permet de faire une recherche de disque par artiste.
l'utilisateur rentre donc le nom de l'artiste et le programme affiche la liste de ses disques
pour l'instant, je fais:
char* art=malloc(100*sizeof(char));
printf("\nnom de l'artiste à rechercher???\n" );
while(getchar()=='\n');
gets(art);
printf("\nresultat:%s",art);
maintenant, un aperçu de mon terminal:
nom de l'artiste à rechercher???
The Cure
resultat:he Cure
vous remarquerez que la première lettre de la chaine a été sucrée, ce qui m'embête un peu à vrai dire...
Alors, j'ai cherché un peu, et j'ai vu beaucoup de messages disant que la fonction gets est buggée et qu'il ne faut pas l'utiliser
d'ailleurs, quand je compile, mon terminal me met un warning:
liouan@liouan-laptop:~/P2_Denoyelle/code_linux$ make
gcc -c -g -Wall -pedantic main_etu.c
gcc -o main_etu cddb.o list.o main_etu.o
main_etu.o : Dans la fonction "menu"
Alors je veux bien qu'elle "should not be used" mais dans ce cas, je fais quoi? vous une autre fonction qui fait la même chose? (j'ai cherché mais n'ai pas trouvé. De plus, je précise que mon code est en C, pas en C++)