Чтобы преобразовать строку в целое число без использования каких-либо библиотечных функций C, вы можете воспользоваться несколькими методами. Вот некоторые из них:
-
Использование цикла:
- Перебрать каждый символ строки.
- Преобразуйте каждый символ в соответствующее числовое значение.
- Умножьте текущее целое число на 10 и добавьте числовое значение символа.
- Повторяйте, пока не будут обработаны все символы.
-
Использование значений ASCII:
- Перебрать каждый символ строки.
- Вычтите значение ASCII «0» из значения ASCII символа, чтобы получить соответствующее числовое значение.
- Умножьте текущее целое число на 10 и добавьте числовое значение.
- Повторяйте, пока не будут обработаны все символы.
-
Использование рекурсии:
- Передавайте строку рекурсивно, исключая первый символ.
- Преобразуйте первый символ в его числовое значение.
- Умножьте результат рекурсивного вызова на 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;
}