IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

verification de saisie


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2019
    Messages : 11
    Points : 2
    Points
    2
    Par défaut verification de saisie
    Bonjour!

    J'essaye de vérifier la saisie utilisateur en ne prenant que des entiers. A votre avis, que se passe t-il en matière de mémoire et de rapidité?
    Pour le compiler j'ai utiliser l'option -Wall et j'ai un warning à cause de l'expression régulier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf(" %[01]",&valid);
    Je n'ai pas non plus pu ecrire:
    Comment ça se fait?

    Et voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    while(valid!=49){
    		while(verifNb!=1){
    			puts("\nEcrivez un entier\n");
    			verifNb = scanf(" %3d",&nb);
    			viderBuffer();
    			}
    		verifNb=0;
    		printf("Avez-vous bien ecrit: %d\n",nb);
    		while(valid!=49 && verifValid !=1){
    			puts("Taper 0 pour non ou 1 pour valider\n");
    			verifValid = scanf(" %[01]",&valid);
    			viderBuffer();
    			}
    		verifValid=0;
    	}
    	printf("%d est valide\n",nb);
    Merci par avance pour vos conseils!

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 984
    Points
    30 984
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par philippppe Voir le message
    Merci par avance pour vos conseils!
    Mon premier conseil est qu'il n'est jamais nécessaire de vider le buffer (ta fonction videBuffer() que tu appelles toutes les 3 mn). Déjà parce que celui qui gère bien ses IO ne se retrouve jamais avec un buffer contenant des trucs qu'il n'est pas censé contenir. Et surtout parce qu'un buffer ce n'est pas forcément le clavier. Si par exemple tu es dans le monde Unix, un programme peut recevoir ses données depuis un autre programme via un pipe et dans ce cas le buffer c'est la sortie de l'autre programme => si tu le vides inconsidérément tu perds les données de l'autre programme. Accessoirement j'espère que cette fonction videBuffer() ne travaille pas à coup de fflush(stdin)...

    Sinon moi quand je veux "sécuriser" mes saisies je passe par fgets() + sscanf(). Le fgets() c'est pour récupérer le contenu de mon clavier sans me préoccuper de sa nature et le sscanf() c'est pour extraire le nombre se trouvant dans le contenu extrait.
    Exemple
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    int saisieInt(char *prompt) {
    	char tampon[1024 + 1];
    	int nb;
     
    	while (1) {
    		fputs(prompt, stdout);
    		fflush(stdout);
    		fgets(tampon,1024 + 1, stdin);
    		if (sscanf(tampon, "%d", &nb) > 0) break;
    		printf("Saisie incorrecte, recommencez !!!\n");
    	}
    	return nb;
    }
     
    int main() {
    	int nb=saisieInt("Votre nombre ?");
    	printf("nb=%d\n", nb);
    }
    Il restera un petit bémol à cette façon de faire: si l'entrée est plus grande que 1024 il restera des trucs sans stdin. Dans la majorité des cas cette probabilité peut être négligée (ratio "danger/coût de codage") d'autant plus que la valeur 1024 peut être mise en macro ce qui permet de recalibrer facilement le code si nécessaire. Et si vraiment c'est problématique alors on peut remplacer fgets() par getline() qui, elle, récupère toute une ligne quelle que soit sa taille (mais fatalement elle est plus lourde).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2019
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par foetus Voir le message
    Je suis désolé, j'avais déjà vu ce genre de texte et je ne le comprends pas.
    Pourquoi scanf(" %[01]",&valid); genere un warning?

    Citation Envoyé par Sve@r Voir le message
    Bonjour [...]
    .
    Dans mon cas il s'agit de récupérer des entiers saisis au clavier, de taille max imposés et de rejeter tout le reste. Je ne comprends pas pourquoi tu me conseilles autre chose que scanf.
    Pour ce qui est de vider le buffer toutes les trois minutes, je croyais bien faire en renettoyant après chaque utilisation de scanf. ( et non je n'ai pas fflush(stdin)...)

    quand est-il des trois while, est-ce tres gourmand en ressources?

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Et c'est censé vouloir dire quoi %[01] comme pattern ?
    Parce que vu que c'est absolument pas permis comme syntaxe, faudrait peut-être commencer par savoir ce que tu espères faire.

    Récupérer seulement 0 ou 1 ? %1d et tu vérifies que c'est correct.
    Mais dans un cas aussi trivial, autant récupérer la string entière, et donc éviter tous les maux de tête de buffer pas entièrement vidé et autre, et vérifier '0' ou '1'.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 984
    Points
    30 984
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par philippppe Voir le message
    Pourquoi scanf(" %[01]",&valid); genere un warning?
    Peut-être parce que le caractère "%" implique un format indiquant à la fonction le type qu'elle devra récupérer (%d=int, %f=float, etc...) et que toi tu n'en mets pas...

    Citation Envoyé par philippppe Voir le message
    Dans mon cas il s'agit de récupérer des entiers saisis au clavier, de taille max imposés et de rejeter tout le reste. Je ne comprends pas pourquoi tu me conseilles autre chose que scanf.
    Parce que scanf (scan formaté) implique un truc "formaté" et que ce que tape l'utilisateur est tout sauf formaté. Rien que le <return> qu'il doit taper pour valider son int fout déjà la dawa dans le code car il n'est pas traité par "%d" et reste donc à faire chier la saisie suivante (et bonjour la migraine si la saisie de ce fameux int a lieu dans une alternative => un coup elle y est un coup elle n'y est pas !!!). D'où mon fgets() initial pour vider tout stdin tout en le récupérant pour le traiter plus tard.

    Citation Envoyé par philippppe Voir le message
    Pour ce qui est de vider le buffer toutes les trois minutes, je croyais bien faire en renettoyant après chaque utilisation de scanf.
    "je croyais", "renettoyer" tout est là. Comme je l'ai dit, celui qui gère ses IO sait en permanence ce que contient son buffer et n'a donc pas besoin de "renettoyer" quoi que ce soit. Si tu écris int a=0, tu sais ce que contient "a". Tu ne vas pas réécrire a=0 toutes les 15 lignes en croyant bien faire...


    Citation Envoyé par philippppe Voir le message
    qu'en est-il des trois while, est-ce tres gourmand en ressources?
    Pas spécialement (il y a pas de calcul compliqué, pas de tableaux à déplacer). Mais bon ce n'est pas non plus le summum de la programmation. Déjà tu as deux variables différentes (verifNb et verifValid) pour faire la même chose à deux moments différents (une variable suffit donc). Plus tu testes deux fois valid != 49 (pourquoi 49 d'ailleurs?) et tu affectes ta variable verifNb sans la traiter. Ce n'est pas grand chose mais c'est toujours plus gourmand que si tu ne le faisais pas.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par philippppe Voir le message
    Je suis désolé, j'avais déjà vu ce genre de texte et je ne le comprends pas.
    Pourquoi scanf(" %[01]",&valid); genere un warning?
    Arrête de faire le toto le format est %[flags][width][.precision][length]specifier
    • Il est où le specifier (spécificateur en français apparemment) ?
    • Les crochets ne sont pas autorisés : c'est pour dire que le champs est facultatif "The format specifier can also contain sub-specifiers: flags, width, .precision and modifiers (in that order), which are optional"

  8. #8
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2019
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    merci pour vos agreables reponses d'êtres supérieurs... toute mes excuses d'avoir posté une question de debutants sur un forum d'expert.
    Je quitte ce site plein de compréhension et de bienveillance. bravo les gars

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    merci pour ton agréable question "Pourquoi scanf(" %[01]",&valid); genere un warning?" posée 2 fois... toute mes excuses d'avoir répondu à une question de débutants alors qu'il n'y a qu'à lire la documentation [en anglais certes].
    Je te remercie pour ta gentillesse "ce site plein de compréhension et de bienveillance". bravo O.P. (<- original poster)


    Édit : Voici le warning
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    main.c:15:15: warning: format ‘%[01’ expects argument of type ‘char *’, but argument 2 has type ‘int *’ [-Wformat=]
       15 |     scanf("%[01]",&valid);
          |            ~~~^   ~~~~~~
          |               |   |
          |               |   int *
          |               char *
          |            %l[
    J'en conclus que tu ne sais pas lire l'anglais. Ton format ne passe pas et toi, au lieu de regarder la documentation, tu viens poster

  10. #10
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 103
    Points
    43 103
    Par défaut
    j'ai un warning à cause de l'expression régulier
    Je ne savais pas que scanf gérait les expressions régulières (je suis pas programmeur), mais encore faut il les présenter correctement (pas de % devant).
    C'est bien indiqué dans la doc.

    Il restera un petit bémol à cette façon de faire: si l'entrée est plus grande que 1024 il restera des trucs sans stdin.
    Sauf que dans le cas de figure ici présent, l'entrée est sensée être un entier. Si tu dois traiter un entier de 1024 caractères ...... Je pense que tu as été plus que large.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  11. #11
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 984
    Points
    30 984
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Sauf que dans le cas de figure ici présent, l'entrée est sensée être un entier. Si tu dois traiter un entier de 1024 caractères ...... Je pense que tu as été plus que large.
    Non désolé que tu n'aies pas pas bien compris l'idée que je voulais exposer. Il ne faut pas voir "taille allouée vs taille utilisée" mais "taille allouée vs taille saisie". Si l'utilisateur à qui on demande "Votre nombre ?" a dans l'idée de taper plus de 1024 octets, ce qu'il a tapé et qui dépasse 1024 reste alors dans stdin. Et ça peut être alors un souci...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Quitte à diriger vers la documentation, autant diriger vers la bonne fonction : scanf. Ce qui permettra de s'apercevoir que ce format "%[01]" est parfaitement valide.
    (Et oui, il faut le % devant, sinon la fonction attendra littéralement « [01] » comme entrée, pas juste « 0 » ou « 1 », et n'aura pas de paramètre d'entrée correspondant.)

    Le soucis, c'est que ce format n'attend pas l'adresse d'un entier comme paramètre correspondant mais celle d'une chaîne de caractères, comme le rappelle très bien le message d'erreur donné par foetus :
    main.c:15:15: warning: format ‘%[01’ expects argument of type ‘char *’, but argument 2 has type ‘int *’ [-Wformat=]
    Toutefois ici tu souhaites juste saisir « 0 » ou « 1 », pas des suites du genre « 1010101 », ce que permet "%[01]" et qui engendrera entre autre des risques de dépassement de buffer (tout comme "%s").
    On limite donc à un seul caractère : "%1[01]", mais on n'oublie pas de prévoir le '\0' marquant la fin de la chaîne :
    Tu pourras dès lors vérifier le retour de la fonction pour t'assurer que l'utilisateur a bien saisi un « 0 » ou un « 1 » :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (scanf(" %1[01]", valid) == 1) // 1 = nombre de paramètres lus avec succès, ici un seul : valid
    et vérifier le caractère saisi avec if (valid[0] == '0' /* ou '1' */) (ou encore if (strcmp(valid, "0" /* ou "1" */) == 0)).

    Note : tu as bien fait d'insérer un espace avant le % de ce format, car contrairement aux autres formats comme "%d", celui-ci n'ignore pas les éventuels caractères blancs situés avant. Entre autres le '\n' venant de la touche Entrée d'une saisie précédente. Il traiterait ainsi le '\n' plutôt que le '0' ou '1' qui suit, ce qui ferait échouer la lecture.

    Pour approfondir le fonctionnement de cette fonction, je recommande la lecture de ce tutoriel Scanf démythifiée.

    Bien sûr, sans doute plus simple, tu as aussi la possibilité d'utiliser un entier avec le format "%d" et vérifier derrière s'il est égal à 0 ou 1.
    Dernière modification par Invité ; 17/10/2021 à 18h24.

  13. #13
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 103
    Points
    43 103
    Par défaut
    Merci Winjerome pour cette explication.

    Pour moi la doc officielle n' est pas très explicite sur cet aspect. Dans une regex au sens large, on peut indiquer le nombre de caractère concerné, j'aurais pas eu pour logique de placer le % en amont.

    donc ne pas tenir compte de mon 1er post.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  14. #14
    Membre éprouvé
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 562
    Points : 1 253
    Points
    1 253
    Par défaut
    Salut,

    Elle est là ton erreur et certainement celle de l'auteur de la discussion, c'est de croire que scanf prend en charge les expressions régulières. Il n'en est rien. Tout ce que (f)scanf accepte et comprend c'est une chaîne de contrôle, c'est un ensemble de directives où le symbole modulo % annonce une spécification de conversion. Dans les faits cela se traduit par le pilotage séquentiel d'un rudimentaire parseur, un peu comme ce qui se fait pour parser la ligne de commande si c'est plus parlant. Donc c'est vraiment quelque chose de très sommaire au regard des processeurs, compilateurs et moteurs impliqués dans les expressions régulières.

  15. #15
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Quitte à diriger vers la documentation, autant diriger vers la bonne fonction
    Effectivement, la documentation cplusplus.com de scanf en anglais

    Et tu as raison je me suis trompé, croyant que le format printf est le même que celui de scanf. Les différences sont
    • un format %[ * ][width][length]specifier plus simple sans flags ni .precision - [sûrement] plus adapté à la saisie qu'à l'affichage
    • un specifier (spécificateur) ayant en + 2 ajouts "expression régulière" [characters] (scanset) et [^characters] (negated scanset). Et 2-3 trucs en moins (A, G, X)


    Pour 1 exemple, il faut rechercher sur les internets scanf scanset.
    Mais effectivement ce spécificateur est assez confusant parce qu'il ne spécifie pas explicitement le type, mais "Any number of the characters" et "Any number of characters none of them" indiquent bien 1 chaîne de caractères en entrée.
    Ce qui semble logique (l'entrée étant chaîne de caractères si je ne me trompe pas, ainsi il n'y a aucune conversion que des tests) et ce que le warning indique également.

  16. #16
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 103
    Points
    43 103
    Par défaut
    Elle est là ton erreur et certainement celle de l'auteur de la discussion, c'est de croire que scanf prend en charge les expressions régulières.
    En tout cas la syntaxe est similaire, il doit probablement y avoir une raison.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  17. #17
    Membre éprouvé
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 562
    Points : 1 253
    Points
    1 253
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    En tout cas la syntaxe est similaire, il doit probablement y avoir une raison.
    Oui les 26 lettres de l'alphabet.

    Non, plus sérieusement. Tout ça est issu du monde scientifique. Pour construire une expression compacte et concise on fait systématiquement appel à l'usage de symboles et de lettres, c'est culturel. Que dans le cas présent tu vois des similitudes entre ces deux grammaires c'est tout à fait normal, mais ça ne reste que des façades.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. verification champ saisi formulaire
    Par calitom dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/01/2008, 14h36
  2. verification de saisie
    Par daff86 dans le forum Tkinter
    Réponses: 2
    Dernier message: 30/05/2007, 16h02
  3. Verification de saisie
    Par abigaelle dans le forum Général Python
    Réponses: 8
    Dernier message: 03/05/2006, 14h11
  4. Verification de saisie dans un sous-formulaire
    Par OBIWAN64 dans le forum Access
    Réponses: 4
    Dernier message: 15/03/2006, 12h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo