Как преобразовать строку в целое число без библиотечных функций в C: объяснение нескольких методов

Чтобы преобразовать строку в целое число без использования каких-либо библиотечных функций C, вы можете воспользоваться несколькими методами. Вот некоторые из них:

  1. Использование цикла:

    • Перебрать каждый символ строки.
    • Преобразуйте каждый символ в соответствующее числовое значение.
    • Умножьте текущее целое число на 10 и добавьте числовое значение символа.
    • Повторяйте, пока не будут обработаны все символы.
  2. Использование значений ASCII:

    • Перебрать каждый символ строки.
    • Вычтите значение ASCII «0» из значения ASCII символа, чтобы получить соответствующее числовое значение.
    • Умножьте текущее целое число на 10 и добавьте числовое значение.
    • Повторяйте, пока не будут обработаны все символы.
  3. Использование рекурсии:

    • Передавайте строку рекурсивно, исключая первый символ.
    • Преобразуйте первый символ в его числовое значение.
    • Умножьте результат рекурсивного вызова на 10 и добавьте числовое значение.
    • Повторяйте, пока строка не станет пустой.

Вот пример реализации первого метода (с использованием цикла):

#include <stdio.h>
int stringToInt(const char* str) {
    int result = 0; // Initialize the result
    int sign = 1; // Initialize the sign to positive
    // Check for negative sign
    if (str[0] == '-') {
        sign = -1;
        str++; // Move the pointer to the next character
    }
// Iterate through each character
    while (*str != '\0') {
        // Convert the character to its numeric value
        int digit = *str - '0';
        // Multiply the current integer by 10 and add the numeric value
        result = result * 10 + digit;
        // Move the pointer to the next character
        str++;
    }
// Apply the sign
    result *= sign;
    return result;
}
int main() {
    const char* str = "12345";
    int num = stringToInt(str);
    printf("Converted integer: %d\n", num);
    return 0;
}