Преобразовать строку цифр в число типа int - C (СИ)
Формулировка задачи:
Здравствуйте! Помогите поправить код функции, не работает при работе с ведущим знаком '-'.
Описание задачи внутри..
Заранее спс)
P.S:Стандартными функциями пользоваться нельзя..
#include <stdio.h> #include <stdlib.h> #include <windows.h> /** 1.2. Написать функцию int stonum( char *str ), преобразующую строку цифр str (возможен ведущий знак ‘+’ или ‘-‘) в число типа int. **/ int stonum(char *str); int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); char *str=(char*)malloc(10*sizeof(char)); printf("Введите строку цифр: "); gets(str); printf("Число полученное в результате обработки: "); printf("%d ",stonum(str)); return 0; } int stonum(char *str) { int n=0,k=1; while (*str) { if (*str=='-') k=-1; if (*str=='+') k=1; else n=10*n+*str-'0'; str++; } n*=k; return n; }
Решение задачи: «Преобразовать строку цифр в число типа int»
textual
Листинг программы
int stonum(char *str) { int n=0,k=1; while (*str) { if (*str=='-') k=-1; if (*str=='+') k=1; if ((*str >= '0') && (*str <= '9')) n=10*n+*str-'0'; str++; } n*=k; return n; }
Объяснение кода листинга программы
- Функция
stonum
принимает в качестве аргумента указатель на строку символовstr
. - Переменная
n
инициализируется значением 0 и используется для хранения результата преобразования строки в число. - Переменная
k
инициализируется значением 1 и используется для хранения знака числа (положительного или отрицательного). - В цикле
while
происходит проход по каждому символу строки. - Если текущий символ равен '-', то значение переменной
k
меняется на -1 (отрицательный знак). - Если текущий символ равен '+', то значение переменной
k
меняется на 1 (положительный знак). - Если текущий символ является цифрой (больше или равен '0' и меньше '9'), то значение переменной
n
увеличивается на 10 умноженное на текущее значениеn
и вычитается значение ASCII кода символа '0' (для преобразования цифры в число). - После прохода по всем символам строки, значение переменной
n
умножается на значение переменнойk
и возвращается в качестве результата работы функции.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д