HELP!!!! gérer les espace dans mon prog lors des questions
Ethylotek
Messages postés27Date d'inscriptionjeudi 2 juin 2005StatutMembreDernière intervention12 avril 2006
-
9 juin 2005 à 09:55
Ethylotek
Messages postés27Date d'inscriptionjeudi 2 juin 2005StatutMembreDernière intervention12 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
castelj
Messages postés10Date d'inscriptionmercredi 2 juin 2004StatutMembreDerniè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...
Pamaury
Messages postés341Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention17 juin 20083 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 .
Ethylotek
Messages postés27Date d'inscriptionjeudi 2 juin 2005StatutMembreDernière intervention12 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 !
ctx_man
Messages postés285Date d'inscriptionmardi 28 décembre 2004StatutMembreDernière intervention20 janvier 20133 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.