Bonjour à tous,

J'essaie d'écrire un code qui vérifierai qu'une saisie clavier est bien un nombre (entier ou à virgule donc isdigit ne suffit pas). J'ai écrit cela :

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
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <string.h>
 
int main (int argc, char** argv)
{
 
    char chaine[6] = {0};
    double len = 0;
    int test = 0;
 
    while(test != 1)
    {
        printf("%snombre ? \n",chaine);
        scanf ("%5[0123456789.]", chaine);
        len = strlen(chaine);
 
        if (len != 0)
            {
                printf("%s ça marche\n",chaine);
                test = 1;
            }
        else
            {
                printf("erreur veuillez recommencer \n");
                scanf ("%*[^\n]");
                getchar ();
            }
    }
Cela fonctionne pas trop mal sauf que toute chaîne de caractère commençant par un entier est considérée comme valide. ainsi 3.a238 par exemple ne retournera pas d'erreur.

Avez-vous une idée de comment faire (quitte à partir sur un code complètement différent) ?


Merci.