Probleme de variables avec les entrées/sorties

Résolu
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013 - 28 sept. 2005 à 14:50
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 - 28 sept. 2005 à 22:33
Bonjour j'ai un petit probleme avec les entrées sorties, je m'explique j'essai de creer un programme qui ai principalement comme role de pouvoir configurer un server de jeu sans tapper les lignes de commmandes ou autre juste avec des scanf,

le programme est composé d'un menu avec une fonction switch() qui envoi vers le .h du jeu concerné, cependant j'ai un probleme je ne peut pas faire de gets(variable); vu que je suis dans un switch, donc je fais le code suivant

//server name
FILE *mohaa = fopen("server.cfg","w+");
printf("\ntout d'abord quel est le nom de votre server?:\n");
scanf("%s",name);
fprintf(mohaa,"commande "%s"",name)

(la variable name ayant été déclaré comme ceci: char name[512]; cependant il y a plusieurs autres question mais dans le nom si la personne met un espace cela saute une question (4 espace et il loupe 4 questions)
pourtant quand je fais mon fprintf() les espaces sont bien pris en comptes dans le fichier. quel est le probleme svp!

.

7 réponses

julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
28 sept. 2005 à 22:33
Jamais essayé avec scanf, mais elle respecte le meme formalisme que sscanf donc devrait marcher en effet.

Sinon, si tu veux tout lire ce que l'utilisateur rentre sauf le \n de la fin:

scanf("%[^\n]", buffer);



Attention, les exemples que j'avais donné étaient à base de sscanf et
non pas de scanf. sscanf permet de lire à partir d'une chaine de
caractère et non pas à partir de l'entrée standard. C'est pour ça que
je spécifiait une chaine au départ de ma fonction.

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
2
gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
28 sept. 2005 à 16:00
la fonction a utiliser serai pas gets();
a vérifié je ne suis pas sur
0
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013
28 sept. 2005 à 16:46
ouai mais il ne le prend pas en compte le gets :s (en fait voila le code)

switch( choice ) {
case 1: #include "mohaa.h";
break;
... //ensuite la suite du switch

et dans le mohaa.h si je met des gets il les prend pas en compte parce que je suis dans le switch, j'ai testé de mettre gets et de le compiler en exe et ca marche, sauf que je veux juste un seul executable donc les .h m'aident a ce niveau s: qqn sait d'ou vient le probleme
0
gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
28 sept. 2005 à 16:50
c'est sur scanf ne peux prendre qu'un mot alors des que tu met un espace c'est comme si tu sortais de scanf et continuais
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013
28 sept. 2005 à 17:43
ouai mais comment faire alors pour que je puisse mettre un gets() car gets() dans un switch() ca marche pas, il me l'ignore
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
28 sept. 2005 à 18:12
scanf peut lire plus d'un mot!!!!

sscanf(buffer, "%[^\n\0]", tmp);
On lit dans buffer jusqu'à ce que l'on rencontre le caractere \n ou \0 et on stoque le résultat dans tmp.



sscanf(buffer, "%[a-z' ']", tmp);

On lit dans buffer tan que l'on trouve des caractères ou des espaces, et on stoque le résultat dans tmp.

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013
28 sept. 2005 à 18:34
en gros ca me donne:
char buffer[512];
char name[];
scanf(buffer, "%[a-z' ']",name);

si ma variable est en fait name ? :s parce qu'a la compilation ca marche mais il saute la question comme un gets :s, j'commence a desesperer (mais merci de m'aider les gars)

.
0
Rejoignez-nous