• STATISTIQUES
  • Il y a eu un total de 2 membres et 5012 visiteurs sur le site dans les dernières 24h pour un total de 5 014 personnes!


    Membres: 2 609
    Discussions: 3 580
    Messages: 32 820
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Reddit
    Subreddit dédié à la sécurité informatique.
    Hacking
    [EN] w3challs
    Ce site propose différents types de défis informatiques: piratage, craquage, cryptographie, stég...
    Hacking
    [FR] Forum-Webmaster
    Une communauté webmaster pour apporter / recevoir de l'aide en création de site internet. Webmaster...
    Webmaster
    [FR] dcode
    dcode.fr est le site indispensable pour décoder des messages, tricher aux jeux de lettres, résoudre des énigmes...
    Outils / Add-on
    [EN] Sabre Films
    Site de challenge présenté sous la forme d'une quête. Vous êtes un détective et devrez résoudre d...
    Challenges
    [EN] Listbrain Version 3
    Site proposant 66 challenges présentés dans une liste mélangée.
    Challenges
    [EN] hax.tor
    50 level de challenges mélangés
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
(C) restriction scanf
06-11-2012, 15h36 (Modification du message : 06-11-2012, 15h38 par InFamouZz.)
Message : #1
InFamouZz Hors ligne
Membre actif
*



Messages : 76
Sujets : 21
Points: 3
Inscription : Dec 2011
(C) restriction scanf
salut
est-ce que quelqu'un sait comment on pourrais faire pour que dans un scanf l'utilisateur ne puisse taper qu'une seul caractère et que dans un autre scanf il ne puisse taper qu'un seul nombre
merci de votre aide Shy
+1 (0) -1 (0) Répondre
06-11-2012, 15h44
Message : #2
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: (C) restriction scanf
scanf() permet de parser / formater une entrée d'une certaine façon. elle n'autorisera cependant pas la restriction a la saisie. Pour ça, je te conseille de te tourner vers les termcaps (Terminal capabilities) qui te permettra de n'autoriser la saisie que d'un seul caractère par exemple. (On appelle ca mettre son terminal en mode raw)

Tu pourras trouver un exemple de code ici: http://www.cs.uleth.ca/~holzmann/C/system/ttyraw.c
+1 (0) -1 (0) Répondre
06-11-2012, 18h14
Message : #3
sakiir Hors ligne
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de
*



Messages : 411
Sujets : 51
Points: 34
Inscription : Sep 2012
RE: (C) restriction scanf
alul ave strlen() et si 'est trop grand, et bien tu prend les mesures adequate !
+1 (0) -1 (0) Répondre
13-11-2012, 00h55
Message : #4
InFamouZz Hors ligne
Membre actif
*



Messages : 76
Sujets : 21
Points: 3
Inscription : Dec 2011
RE: (C) restriction scanf
c'est bon mais je voudrais que l'utilisateur ne saisies uniquement un chiffre sinon ca lui demande de reesayer
c'est pas possible ?
+1 (0) -1 (0) Répondre
13-11-2012, 08h47
Message : #5
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,610
Sujets : 72
Points: 466
Inscription : Jan 2012
RE: (C) restriction scanf
Me semble que Ark y'a répondu..

Sinon ben http://www.google.fr/ ...
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (0) -1 (0) Répondre
13-11-2012, 10h37
Message : #6
InFamouZz Hors ligne
Membre actif
*



Messages : 76
Sujets : 21
Points: 3
Inscription : Dec 2011
RE: (C) restriction scanf
oui mais je debute et je voudrais utiliser scanf()
+1 (0) -1 (0) Répondre
13-11-2012, 10h38 (Modification du message : 13-11-2012, 10h47 par supersnail.)
Message : #7
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,610
Sujets : 72
Points: 466
Inscription : Jan 2012
RE: (C) restriction scanf
On t'a dit, c'est pas possible avec scanf (cf encore la réponse de Ark).

Edit: "je débute" n'est pas une excuse valable.
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (0) -1 (0) Répondre
15-11-2012, 16h19
Message : #8
sakiir Hors ligne
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de
*



Messages : 411
Sujets : 51
Points: 34
Inscription : Sep 2012
RE: (C) restriction scanf
je t'ai envoyé une fonction qui permetait de le faire !! Smile
+1 (0) -1 (0) Répondre
15-11-2012, 20h09
Message : #9
-Mat-
Non-enregistré



 
RE: (C) restriction scanf
Il est toujours possible d'utiliser une autre fonction que tu devras faire toi même après scanf() pour vérifier si l'entrée correspond à un nombre. Je peux toujours te donner des indices :
Il faut d'abord vérifier que chaque caractère de la chaine correspond à un chiffre (donc dans le codage ASCII : de 30 à 39) et qui renvoie 1 si c'est un nombre et 0 si c'est autre chose (donc moyen de mettre cette fonction comme condition de la boucle).

Ensuite tu peux utiliser strtol qui permet de changer une chaine en nombre (en long par contre).

Pour limiter le nombre de caractère à écrire à l'écran, c'est pas possible avec scanf() mais après tu peux toujours choisir de ne prendre que le premier caractère : chaine[0].
positive (0) negative (0) Répondre
15-11-2012, 20h21
Message : #10
Luxerails Hors ligne
Bon membre
*



Messages : 267
Sujets : 6
Points: 67
Inscription : Aug 2011
RE: (C) restriction scanf
(15-11-2012, 20h09)-Mat- a écrit : (donc dans le codage ASCII : de 30 à 39)

En hexadécimal hein ! sinon en base 10 c'est de 48 à 57.
+1 (0) -1 (0) Répondre
15-11-2012, 21h03
Message : #11
-Mat-
Non-enregistré



 
RE: (C) restriction scanf
(15-11-2012, 20h21)Luxerails a écrit :
(15-11-2012, 20h09)-Mat- a écrit : (donc dans le codage ASCII : de 30 à 39)

En hexadécimal hein ! sinon en base 10 c'est de 48 à 57.

Sorry ! J'ai encore un peu de mal avec les bases.

Et sinon InFamouZz, tu peux évidemment créer ta propre fonction qui transforme une chaine en nombre mais comme tu dis que tu es débutant.
positive (0) negative (0) Répondre
15-11-2012, 22h08
Message : #12
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: (C) restriction scanf
(15-11-2012, 21h03)-Mat- a écrit : Et sinon InFamouZz, tu peux évidemment créer ta propre fonction qui transforme une chaine en nombre mais comme tu dis que tu es débutant.

recoder la fonction atoi n'est pas très complique en soi. Il suffit de réfléchir un tout petit peu a comment stocker le résultat au fur et a mesure, c'est tout a fait faisable, et un très bon exercice pour un débutant.
+1 (0) -1 (0) Répondre
15-11-2012, 22h24
Message : #13
-Mat-
Non-enregistré



 
RE: (C) restriction scanf
Je vais d'ailleurs la faire moi-même ! Je viens d'imaginer le code.

Après pourquoi autant s'embêter alors que Python gère les chaine beaucoup plus facilement Smile
positive (0) negative (0) Répondre
15-11-2012, 22h27
Message : #14
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: (C) restriction scanf
(15-11-2012, 22h24)-Mat- a écrit : Après pourquoi autant s'embêter alors que Python gère les chaine beaucoup plus facilement Smile

Et bien le jour ou tu n'auras pas la possibilité d'utiliser python pour une raison quelconque, tu seras bien content de pouvoir le faire en C :p
Apres, que python le gere mieux, je suis pas d'accords, il existe en nombre enorme de fonctions de lib C qui permettent de faire presque autant de traitement qu'en python Wink
+1 (0) -1 (0) Répondre
16-11-2012, 18h19
Message : #15
-Mat-
Non-enregistré



 
RE: (C) restriction scanf
Oui sauf qu'en Python, la gestion est directe / inné (je cherche le mot adapté mais je l'ai pas trouvé).
Après c'est vrai qu'avec les bibliothèques tous les traitements de bases sont déjà écrits quelques soient les langages et directement intégrés.
positive (0) negative (0) Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut