Bonjour, je voudrais faire une fonction propre qui permet de récupérer un entier en évitant tout débordement.
J'ai bien quelques idées, mais c'est pas super propre ou efficace (allouer un buffer assez gros ou réallouer de la mémoire si nécessaire et comparer les caractères un à un avec ceux de INT_MAX dans limits.h dès que l'on atteint le nombre max de caractère composant INT_MAX).

Voici une fonction par exemple qui limite la saisie à 4 caractères. Perso, je ne vois pas comment faire un débordement sur un système 32 bits, mais c'est pas la panacée de limiter à 4 caractères ni à un nombre fixes. Je voudrais pouvoir atteindre la limite max du système.
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
 
static int gets_int() 
{ 
	char buffer[sizeof(int)+1];
	int i;
	const int NB_MAX_CAR=4;
 
	for(i=0;i<NB_MAX_CAR;i++)
	{
		buffer[i]=charGet();
		if(buffer[i]=='\r')
			break;
	}
	buffer[i]=0;
 
 
	return atoi(buffer);
}
Help :-D