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 36 37 38 39 40 41 42 43
| #include <stdio.h>
#include <errno.h>
#include <limits.h>
#include <stdlib.h>
#define MAX_ELEM 10
int main(void)
{
char const * str = "1 2 3 4 5 6 7 8 9 10";
long results[MAX_ELEM] = {0};
unsigned int nb_founds = 0;
while(*str != '\0' && nb_founds < MAX_ELEM)
{
char * endptr = NULL;
long result = strtol(str, &endptr, 10);
if(endptr == str)
{
str++;
}
else if((result == LONG_MIN || result == LONG_MAX) && errno == ERANGE)
{
str = endptr;
}
else
{
results[nb_founds] = result;
nb_founds++;
str = endptr;
}
}
printf("found %u integer%s :\n", nb_founds, nb_founds > 1 ? "s" : "");
for(unsigned int i = 0; i < nb_founds; i++)
{
printf("%ld\n", results[i]);
}
return 0;
} |
Partager