Enregistrer entrer standard dans une variable

Résolu/Fermé
tructruc - 24 déc. 2012 à 14:07
CoKeman Messages postés 9 Date d'inscription mardi 25 décembre 2012 Statut Membre Dernière intervention 27 décembre 2012 - 26 déc. 2012 à 21:49
Bonjour,

je souhaite enregistrer 2 mots, séparés par un espace, entrés dans l'entrée standard dans une seule variable.


Lorsque je fais un:
scanf("%s", var);
je n'enregistre que le premier mot...

Je ne peux pas faire un:
scanf("%s %s", var1, var2);
car je ne dois pas toujours entrer un argument

Merci pour votre aide

4 réponses

CoKeman Messages postés 9 Date d'inscription mardi 25 décembre 2012 Statut Membre Dernière intervention 27 décembre 2012 1
25 déc. 2012 à 21:29
Evite d'utiliser le scanf quand tu programme, c'est assez dégeux..
Sinon, essaie comme ça :
scanf("%[^\n]", nom_var);
il faut que nom_var soit de type char * et soit assez grand pour recevoir tout ce que tu comptes lui envoyé, sinon tu vas segfault!

En faisant un "%[^\n]", tu dis : je veux tout ce qu'on tape sur l'entrée standard jusqu'à ce qu'on tape un "\n".
0
Merci!!
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
26 déc. 2012 à 20:00
Effectivement, vaut mieux utiliser fgets().
En revanche, si on désire utiliser scanf(), je conseille de préciser la taille pour éviter le segfault comme tu dis :
char buf[16];
scanf("%15[^\n]", buf);
0
CoKeman Messages postés 9 Date d'inscription mardi 25 décembre 2012 Statut Membre Dernière intervention 27 décembre 2012 1
26 déc. 2012 à 21:49
Autant pour moi, comme je ne l'utilise jamais j'ai oublier ce petit détail ..
0