HELP!!!! gérer les espace dans mon prog lors des questions

Ethylotek Messages postés 27 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 12 avril 2006 - 9 juin 2005 à 09:55
Ethylotek Messages postés 27 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 12 avril 2006 - 10 juin 2005 à 09:27
bijours
voici le début de mon prog :
printf("Veuillez saisir votre nom:\n");
scanf("%s",name);
printf("Veuillez saisir le nom de votre organisation:\n");
scanf("%s",org);
printf("Veuillez saisir le nom de votre ordinateur:\n");
scanf("%s",computer);
printf("Veuillez saisir la clef produit de votre Windows XP:\n");
scanf("%s",key);

voici mon probleme : lorsque la premiere ligne s'exécute et que l'on me demande un nom, je ne peut pas rentrer 2 nom (ex: Pierre fgrtrt "avec un espace entre") car il place le premier nom dans "nom" et le deuxieme nom dans "org" !
comment faire pour que le prog gère l'espace ? pour pouvoir rentrer nom prénom et ensuite org,computer,key
merci pour votre aide a biento


Piero

9 réponses

castelj Messages postés 10 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 9 juin 2005
9 juin 2005 à 10:08
Bonjour,

tu peux utiliser un formatage un peu spécial qui permet de faire ça :

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

ça va prendre ta chaîne de caractères non plus jusqu'au premier espace mais jusqu'au premier appui sur entrée
mais il y a sûrement d'autres moyens de le faire...

Bonne journée
0
Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
9 juin 2005 à 10:18
#include <stdio.h>

#include <stdlib.h>



char name[256];

char computer[256];

char key[256];



int main(int argc,char **argv)

{

printf("Veuillez saisir votre nom:\n");

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

fflush(stdin);

printf("Veuillez saisir le nom de votre ordinateur:\n");

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

fflush(stdin);

printf("Veuillez saisir la clef produit de votre Windows XP:\n");

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

fflush(stdin);



FILE *f=fopen("winnt.txt","a+");

if(f==NULL)

exit(1);

fprintf(f,"%s\n",name);

fprintf(f,"%s\n",computer);

fprintf(f,"%s\n",key);

fclose(f);

// peut-être que ce n'est pas standard cette fonction

rename("winnt.txt","winnt.sif");



getchar();



return 0;

}



// note que fflush(stdin) est nécessaire car sinon le buffer n'est pas
vidé et il reste le retour à la ligne . Je sais que c'est pas très
recommandé mais je vois pas d'autre moyen .

A m a u r y
0
Ethylotek Messages postés 27 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 12 avril 2006
9 juin 2005 à 10:29
c'est pas mal mais si j'utilise ca pour les 4 parametres le prog me demande le nom
et ensuit les autres questions défillent sans que je puisse entrer quelque chose !


Piero
0
BunoCS Messages postés 15480 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 12 juin 2024 103
9 juin 2005 à 10:58
Et si tu fais ça:



printf("Veuillez saisir votre prénom et votre nom:\n");

scanf("%s %s\n", prenom, nom);
strcpy(nomComplet, prenom);

strcat(nomComplet, ' ');

strcat(nomComplet, nom);


Buno
----------------------------------------
L'urgent est fait, l'impossible reste à faire. Pour les miracles, prévoir un délai...
0

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

Posez votre question
Ethylotek Messages postés 27 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 12 avril 2006
9 juin 2005 à 11:18
merci la méthode de Pamaury marche pour moi, elle me convient
a biento et merci a vous tous


Piero
0
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
9 juin 2005 à 23:15
eviter les scanf c'est a moitier pourri.
fait
gets(name); //a la place de scanf("%s", name);
Deja ca regle ton problem d'espace et c'est beacoup plus rapide d'execution.
ne pas oublier les
fflush(stdin);
avant chaque chaque gets pour etre sur de pas recuperer des conneries.
0
Pamaury Messages postés 341 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 17 juin 2008 3
10 juin 2005 à 07:13
oui donc çà revient au même: le C n'est pas assez sécurisé, il y a des chance de faire un overflow .

A m a u r y
0
Ethylotek Messages postés 27 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 12 avril 2006
10 juin 2005 à 08:49
merci ctx_man C'est mieu comme ca
pourrai me dire comment ecrire name entre guillemets dans mon fichier
car gets("name"); ne marche pas !


Piero
0
Ethylotek Messages postés 27 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 12 avril 2006
10 juin 2005 à 09:27
c'est bon j'ai trouvé ne vous dérrangé pa
il faut mettre \ devant les "


Piero
0
Rejoignez-nous