Преобразовать строку цифр в число типа 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
и возвращается в качестве результата работы функции.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д