Pas de dépendances
#include <stdio.h> #include <conio.h> int getnombre() { int c; int n=0; do { c=getch(); // attends la prochaine touche if (c>='0' && c<='9') // si c'est un chiffre uniquement { n*=10; n+=(c-'0'); // mise a jour de n printf("*"); } } while(c!=0x0D); // jusqu'a entrée (code 0x0D) printf("\n"); // revient à la ligne return n; } int main() { int a; printf("Tapez un nombre\n"); a=getnombre(); printf("Nombre = %d\n",a); return 0; }
Voici un petit programme sympa, utilisant la fonction getch de conio qui attend la prochaine frappe de touche. contrairement a getchar qui ne valide que quand on lui envoie entrée, getch() passe quand on lui envoie n'importe quelle touche, il récupere alors le code (ASCII) de la touche. Les difficultés viennent de la manipulation de ces caracteres : en effet, je récuperes mon caractere dans c Cependant, c est un code ASCII, si je tape sur 0, la code de '0' est 48 le code de '1' est 49, etc !! et le reste se suit... Mais a la rigueur, les valeurs des codes, on s'en fiche : le code de zéro se récupere avec '0' le code de la lettre w se récupere avec 'w' etc !! donc en toute logique, pour savoir si le code tapé est un chiffre il est entre '0' et '9' (lire : "code de 0" et "code de 9") on a la ligne : if (c>='0' && c<='9') Puis ensuite, il faut savoir que les codes se suivent : le code de 0 est juste avant celui de 1 qui est juste avant celui de 2, etc !! donc pour obtenir le nombre voulu : une astuce : c-'0' (le code, moins le code de zéro donne le bon nombre) Le reste du programme doit se comprendre :) Note : ne tapez pas des nombres de plus de 9-10 chiffres, car sinon, vous faites déborder le int, et vous aurez un nombre inattendu. si vous etes interessé par la table ASCII: http://www.asciitable.com/