Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include "limits.h"
- int parse_string(const char *input) {
- int result = 0;
- if(input == nullptr) {
- // null-string
- return 0;
- }
- int idx = 0;
- // loop until we encounter zero-terminator
- while(input[idx] != 0) {
- if(input[idx] < '0' || input[idx] > '9') {
- // invalid character
- break;
- }
- int digit = int(input[idx] - '0'); // 0 <= digit <= 9
- if(result > INT_MAX / 10) { return 0; } // mult overflow
- result *= 10;
- if(result > INT_MAX - digit) { return 0; } // add overflow
- result += digit;
- idx++;
- }
- return result;
- }
- int main(int argc, char ** argv) {
- printf("%d", INT_MAX);
- printf("%d", parse_string("2147483647"));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement