#include <cstdlib>
#include <cstdio>
#include <cerrno>
#include <cstring>
int main()
{
char str[] = " 2 365 2344jim 1234444444444444444444567 43";
for (char * e = str; *e != '\0'; )
{
errno = 0;
char const * s = e;
unsigned long int n = strtoul(s, &e, 0);
if (errno) // conversion error (e.g. overflow)
{
std::printf("Error (%s) encountered converting:%.*s.\n",
std::strerror(errno), e - s, s);
continue;
}
if (e == s) { ++e; continue; } // skip inconvertible chars
s = e;
printf("We read: %lu\n", n);
}
}
I2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxjc3RkaW8+CiNpbmNsdWRlIDxjZXJybm8+CiNpbmNsdWRlIDxjc3RyaW5nPgoKaW50IG1haW4oKQp7CiAgICBjaGFyIHN0cltdID0gIiAyIDM2NSAgMjM0NGppbSAxMjM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NTY3IDQzIjsKCiAgICBmb3IgKGNoYXIgKiBlID0gc3RyOyAqZSAhPSAnXDAnOyApCiAgICB7CiAgICAgICAgZXJybm8gPSAwOwogICAgICAgIGNoYXIgY29uc3QgKiBzID0gZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGludCBuID0gc3RydG91bChzLCAmZSwgMCk7CgogICAgICAgIGlmIChlcnJubykgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnNpb24gZXJyb3IgKGUuZy4gb3ZlcmZsb3cpCiAgICAgICAgewogICAgICAgICAgICBzdGQ6OnByaW50ZigiRXJyb3IgKCVzKSBlbmNvdW50ZXJlZCBjb252ZXJ0aW5nOiUuKnMuXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmVycm9yKGVycm5vKSwgZSAtIHMsIHMpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIGlmIChlID09IHMpIHsgKytlOyBjb250aW51ZTsgfSAgIC8vIHNraXAgaW5jb252ZXJ0aWJsZSBjaGFycwoKICAgICAgICBzID0gZTsKCiAgICAgICAgcHJpbnRmKCJXZSByZWFkOiAlbHVcbiIsIG4pOwogICAgfQp9