Sortie d'une bouche grace au "enter"

Résolu
l1vr3ur3 Messages postés 2 Date d'inscription samedi 2 décembre 2006 Statut Membre Dernière intervention 21 février 2007 - 21 févr. 2007 à 17:00
cs_azamharir Messages postés 55 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 1 novembre 2008 - 21 févr. 2007 à 18:53
Bonjour all,
Voici un code source, je voudrai arreter de recuperer les données que l'utilisateur tappe, une fois qu'il fasse appuie sur la touche "Entrer", et non plus lui demander a chaque saisie de tapper O ou N pour quitter la boucle for.
j'ai pas envie de déclarer trop de variables..., mais bon, je sais pas trop comment il va pouvoir s'arreter si on tappe une touche "enter".
je sais pas si en analysant le "\n" qui sera affecté au scanf("%d",&x), parce que x est declaré en tant qu'entier, donc un "\n" affecté a un entier, ça a l'air louche.
je me remet a vous
voici la source:
#include <stdio.h>
void main()
{ FILE *pf
int i,x; char c='O';
pf=fopen("entier.dat",wb);
if (pf==NULL) puts ("erreur d'ouverture");
else { while (c=='O' || c=='o') 
   {puts ("donner la valeur");
   scanf("%d",&x);
fwrite(&x,sizeof(x),1,pf);
puts("autre valeur ? O/N");
scanf("%c",&c);
} fclose(pf);
}
}
merci merci

3 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
21 févr. 2007 à 17:23
int tab[256];
int key, i = 0;

while((key = getchar()) != '\n' && i < 256) tab[i++] = key-'0';

tab contiendra toute les valeurs décimales entrée. Cependant, si une lettre est entrée à la saisie, elle sera donc soustraite par '0' et ajouté au tableau.

Pour palier à ce problème, tu peux ajouter un teste dans la boucle pour n'avoir que des valeurs décimales:
while((key = getchar()) != '\n' && i < 256)
        if(key >= '0' && key <= '9') tab[i++] = key-'0';

Tu écris ensuite (et non dans la boucle), grâce à tab, toute tes valeurs dans un fichier.

C++ (@++)<!--
3
l1vr3ur3 Messages postés 2 Date d'inscription samedi 2 décembre 2006 Statut Membre Dernière intervention 21 février 2007
21 févr. 2007 à 17:49
oui, t'as raison, merci.
autre methode ? plus on a de methodes, mieux c'est ;-)
0
cs_azamharir Messages postés 55 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 1 novembre 2008
21 févr. 2007 à 18:53
salut tu peus faire ça

while (scanf("%d",&x)==1)
            fwrite(&x,sizeof(int),1,pf);

tant que tu entre des entiers ==> tu les écris ds le fichier .
pour sortir de la boucle tu tape qlqchose à  part les entiers ( caracteres non numériques)
0
Rejoignez-nous