#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main() {
const char *inputs[] = {
"12345678901234567890", // base 10
"0xFFEE", // base 16
"0755", // base 8 (if base = 0)
"101010", // base 2
"invalid123", // invalid input
};
int bases[] = {10, 0, 0, 2, 10}; // base 0 lets strtoull auto-detect
for (int i = 0; i < 5; ++i) {
const char *str = inputs[i];
int base = bases[i];
char *endptr;
errno = 0;
unsigned long long result = strtoull(str, &endptr, base);
printf("Input: \"%s\" | Base: %d\n", str, base);
if (errno == ERANGE) {
printf(" ➤ Overflow occurred!\n");
} else if (endptr == str) {
printf(" ➤ No digits were found.\n");
} else {
printf(" ➤ Converted value: %llu\n", result);
if (*endptr != '\0') {
printf(" ➤ Remaining string: \"%s\"\n", endptr);
}
}
printf("\n");
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPGVycm5vLmg+CgppbnQgbWFpbigpIHsKICAgIGNvbnN0IGNoYXIgKmlucHV0c1tdID0gewogICAgICAgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MCIsICAvLyBiYXNlIDEwCiAgICAgICAgIjB4RkZFRSIsICAgICAgICAgICAgICAgIC8vIGJhc2UgMTYKICAgICAgICAiMDc1NSIsICAgICAgICAgICAgICAgICAgLy8gYmFzZSA4IChpZiBiYXNlID0gMCkKICAgICAgICAiMTAxMDEwIiwgICAgICAgICAgICAgICAgLy8gYmFzZSAyCiAgICAgICAgImludmFsaWQxMjMiLCAgICAgICAgICAgIC8vIGludmFsaWQgaW5wdXQKICAgIH07CgogICAgaW50IGJhc2VzW10gPSB7MTAsIDAsIDAsIDIsIDEwfTsgIC8vIGJhc2UgMCBsZXRzIHN0cnRvdWxsIGF1dG8tZGV0ZWN0CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyArK2kpIHsKICAgICAgICBjb25zdCBjaGFyICpzdHIgPSBpbnB1dHNbaV07CiAgICAgICAgaW50IGJhc2UgPSBiYXNlc1tpXTsKICAgICAgICBjaGFyICplbmRwdHI7CiAgICAgICAgZXJybm8gPSAwOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmVzdWx0ID0gc3RydG91bGwoc3RyLCAmZW5kcHRyLCBiYXNlKTsKCiAgICAgICAgcHJpbnRmKCJJbnB1dDogXCIlc1wiIHwgQmFzZTogJWRcbiIsIHN0ciwgYmFzZSk7CiAgICAgICAgaWYgKGVycm5vID09IEVSQU5HRSkgewogICAgICAgICAgICBwcmludGYoIiAg4p6kIE92ZXJmbG93IG9jY3VycmVkIVxuIik7CiAgICAgICAgfSBlbHNlIGlmIChlbmRwdHIgPT0gc3RyKSB7CiAgICAgICAgICAgIHByaW50ZigiICDinqQgTm8gZGlnaXRzIHdlcmUgZm91bmQuXG4iKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBwcmludGYoIiAg4p6kIENvbnZlcnRlZCB2YWx1ZTogJWxsdVxuIiwgcmVzdWx0KTsKICAgICAgICAgICAgaWYgKCplbmRwdHIgIT0gJ1wwJykgewogICAgICAgICAgICAgICAgcHJpbnRmKCIgIOKepCBSZW1haW5pbmcgc3RyaW5nOiBcIiVzXCJcbiIsIGVuZHB0cik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==