char *ft_itoa(int n) { char *str; int i; int len; i = 0; len = num_length(n); if (!(str = ft_strnew(len))) return (NULL); else if (n == -2147483648) return (ft_strcpy(str, "-2147483648")); if (n < 0) { str[i] = '-'; n *= -1; i++; } while (--len >= i) { str[len] = (n % 10) + '0'; n /= 10; } return (str); }
int main() { int total_counter = 0; int n = 0; int digit; int current_num_length; int searched_position = 1; int searched_positions_counter = 6; int result = 1; bool is_running = true; while (is_running) { n++; current_num_length = num_length(n); if (searched_position <= (total_counter + current_num_length) && searched_position > total_counter) { total_counter += current_num_length; int k = 1, f = total_counter - searched_position; while (f) { k *= 10; f--; } digit = n / k % 10; result *= digit; std::cout << n << "\t" << total_counter << "\t" << searched_position << "\t" << digit << std::endl; if (searched_positions_counter > 0) { searched_position *= 10; searched_positions_counter--; } else { is_running = false; } } else { total_counter += current_num_length; } } std::cout << "\nresult: " << result << std::endl; return 0; }
char *int_to_string(int number) { int i; int rem; char *str; int length = 0; int copy = number; if (number == INT_MIN) { number = number + 1; } if (number < 0) { print_char('-'); number = number * -1; } length = num_length(number); str = malloc(sizeof(char) * length); if (number == 0) { str[0] = '0'; }else { for (i = 0; i < length; i++) { rem = number%10; number = number/10; str[length - (i +1)] = rem + '0'; } if (copy == INT_MIN) { str[length - 1] += 1; } } return str; }