Преобразовать строку цифр в число типа 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;
}

Объяснение кода листинга программы

  1. Функция stonum принимает в качестве аргумента указатель на строку символов str.
  2. Переменная n инициализируется значением 0 и используется для хранения результата преобразования строки в число.
  3. Переменная k инициализируется значением 1 и используется для хранения знака числа (положительного или отрицательного).
  4. В цикле while происходит проход по каждому символу строки.
  5. Если текущий символ равен '-', то значение переменной k меняется на -1 (отрицательный знак).
  6. Если текущий символ равен '+', то значение переменной k меняется на 1 (положительный знак).
  7. Если текущий символ является цифрой (больше или равен '0' и меньше '9'), то значение переменной n увеличивается на 10 умноженное на текущее значение n и вычитается значение ASCII кода символа '0' (для преобразования цифры в число).
  8. После прохода по всем символам строки, значение переменной n умножается на значение переменной k и возвращается в качестве результата работы функции.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы