Bonjour, j'ai dernièrement demandé de l'aide pour lire une chaîne via le clavier. Je souhaite maintenant aller plus loin. Je voudrais réaliser un programme qui lit une chaîne et la convertisse en entier. Celui-ci devra faire 5 digits maxi sinon il retourne une erreur. Il sera affiché tout d'abord normalement puis en float puis en hexa puis comme un entier (ce pour travailler le format).
J'arrive à ce 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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
    char tab[7];
    char *pend = NULL;
    int nbr = 0;
 
    printf("Entrer un entier de 5 digits maxi\n");
 
    fgets(tab,6,stdin);
    char *line_feed_found = strchr(tab, '\n');
    if (!line_feed_found)
    {
        fprintf(stderr,"votre entrée fait plus de 5 digits!!!\n");
		return 1;
    }
    else
    {
        line_feed_found=0;
        nbr = (int)strtol(tab, &pend, 0);
        if (*pend != 0)
        {
            fprintf(stderr, "ERROR: Conversion en entier raté!\n");
            return 1;
        }
        printf("%5d\n",nbr);
        printf("Float:%5f\n",nbr);
        printf("Hexa:%5h\n",nbr);
        printf("Entier:%5i\n",nbr);
		return 0;
    }
}
J'ai testé ce code et il s'avère que en lui donnant un entier de 5 digits de long, il me dit quand même que j'ai mis un entier trop long. Et quand j'en met un plus court, il n'arrive pas à convertir. Pouvez vous m'aider?
Merci d'avance
Jo