Les chaines de caracteres

dina -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
slm ;bj j ai trouvé un broblem dans les chaines de caracteres : quand je veux lire une chaine de caracteres je fait :
main()
{char c[50];
gets (c); }

ça permet de lire une chaine de caracteres (d'apres notre professeur) mais pour moi pandent l'execution je peut lire que le premier caractere et le programme sort de l'execution,je sais pas ou est le brobleme , si vous trouvez quelque chose aidez moi svp ;j ai vraiment besoin de ça .merci
Configuration: Windows XP
Internet Explorer 7.0

4 réponses

  1. spoophy Messages postés 355 Date d'inscription   Statut Membre Dernière intervention   41
     
    essaye avec le mon clef string c[50];
    0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Tu peux déjà dire à ton professeur que gets est une fonction très dangereuse.

    man gets
    BOGUES
           N'utilisez jamais gets(). Comme il est impossible de savoir à l'avance combien de caractères seront lus par gets(), et comme celui-ci écrira tous les caractères lus, même s'ils  débor-
           dent  du  tampon, cette fonction est extrèmement dangereuse à utiliser. On a déjà utilisé ce dysfonctionnement pour créer des trous de sécurité. UTILISEZ TOUJOURS fgets() À LA PLACE DE
           gets().
    Utilises plutôt fgets

    0
    1. dina
       
      slm; pardon lami20j mais il n a pas marché ,est ce qu'il y a d'autres parametres qu'on utilise a l'interieure de cette fonction apart le nom de la chaine de caracteres? et merci
      0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Donne ici ton code pour pouvoir tester.
    0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Oups, j'ai confondu les messages ;-)

    Il faut écrire
    fgets(c,50,stdin);

    c - c'est le nom de ta variable
    50 - c'est la taille
    stdin - c'est l'entrée standard (le clavier)
    0