printf("Menu \n\n");
printf("1. cree un fichier\n");
printf("2. generer un fichier batch");
scanf("%d",&menu);
printf("\n");
switch (menu)
{
case 1:
printf("Entrez le nom du ficher avec l'extension ( exemple: monfichier.txt)\n ");
scanf("%s", NOM);
F = fopen(NOM, "w");
printf("Entrez le contenu du fichier ");
scanf ("%s", contenu);
fwrite(contenu,sizeof(contenu),1,F);
fclose(F);
break;
case 2:
F = fopen("batch.bat", "w");
fprintf(F, "ipconfig /all > ips.txt");
fclose(F);
}}
NE TENEZ PAS COMPTE DU BATCH ÇA ÇA MARCHE.
Donc comme ca les espaces sont devenus des caractères spéciaux dans le fichier.txt de destination, et si j'utilise fprintf il ne m'écrit que le 1er mot.
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 21 nov. 2008 à 17:09
Ah mais oui, suis-je bête.
Ton scanf ("%s", contenu); ne récupère que le 1er mot saisi. Le masque %s ne calque qu'un seul mot (il s'arrête au premier espace).
Il va donc falloir trouver un autre moyen pour récupérer tout le texte... (perso, je n'ai pas d'idée )
Cordialement, uaip.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Adeon
Messages postés293Date d'inscriptionjeudi 21 août 2003StatutMembreDernière intervention10 avril 20152 22 nov. 2008 à 09:12
je savais pas que scanf s'arretait au premier mot.
Tu peux ptete essayer du coté de cin >> variableTexte;
______________________
Adeon, programmeur de jeux sur directX 9 (http://theolith.com) a votre service !
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 22 nov. 2008 à 12:39
Idem, je pensais que les espaces étaient comptés dans un %s.
Mais mes tests m'avaient montré que non. Une fois j'ai voulu récupérer une chaine de mots entre guillemets, et sscanf(chaine,"blabla "%s" blabla",&chaine2); ne marchait pas correctement non plus.
Et s'il veut utiliser l'opérateur cin, il va falloir qu'il intègre le C++ car je ne vois que du C dans son code.
BastienL21
Messages postés172Date d'inscriptiondimanche 10 décembre 2000StatutMembreDernière intervention12 février 20092 22 nov. 2008 à 14:31
Slt à tous,
Il me semble qu'il existe une syntaxe du type :
scanf("%[^\n]",...);//On peut modifier '\n' par n'importe quel caractère
Qui te prends le texte jusqu'au premier retour à la ligne, ou aussi :
fflush(stdin);
gets(chaine);
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 22 nov. 2008 à 15:39
Yeps.
Au passage BastienL21, tu n'aurais pas un bon lien sous la main expliquant les masques de ce style ? (bien que ce que tu viens de marquer ressemble fort à une regexp).
J'ai déjà trouvé plusieurs exemples, mais pas un lien expliquant brièvement l'utilisation des masques.
BastienL21
Messages postés172Date d'inscriptiondimanche 10 décembre 2000StatutMembreDernière intervention12 février 20092 22 nov. 2008 à 16:10
Re bonjour,
Tu es sûr que ce n'est pas au moment où tu récupère ce qu'il y a dans le fichier que tu ne prends que le premier mot?
Tu peux le vérifier en allant ouvrir manuellemnt le fichier texte avec le bloc-note ou autre éditeur de texte, parsque chez moi, sa marche impec...
printf("Menu \n\n");
printf("1. cree un fichier\n");
printf("2. generer un fichier batch");
scanf("%d",&menu);
printf("\n");
switch (menu)
{
case 1:
printf("Entrez le nom du ficher avec l'extension ( exemple: monfichier.txt)\n ");
scanf("%s", NOM);
F = fopen(NOM, "w");
printf("Entrez le contenu du fichier ");
gets (contenu);
fwrite(contenu,sizeof(contenu),1,F);
fclose(F);
break;
case 2:
F = fopen("batch.bat", "w");
fprintf(F, "ipconfig /all > ips.txt");
fclose(F);
}}
chez moi ca ne marche pas, vous avez bien compris ce que je voulais ? je veux que lorsqu'il me demande le contenu si je tappe "salut ca va" il ne m'affiche pas que le "Salut"