Пользовательская функция преобразования строки в число типа int - C (СИ)
Формулировка задачи:
Задание: создать свою функцию работающую как atoi(функция преобразования строки в число типа int).
Прошу вас поправить мой код, т.к. сам не могу понять в чем проблема, с однозначными и двузначными числами работает правильно, а дальше через раз.
Листинг программы
- #include <string.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <malloc.h>
- #include <math.h>
- #define ten 10
- int ft_atoi(char *str);
- int main(){
- char my_str='0';
- puts("Write a number");
- scanf("%s", &my_str);
- printf("\nResult\t%d\n", ft_atoi(&my_str));
- system("pause");
- return 0;
- }
- int ft_atoi(char *str)
- {
- int i=0, chartoascii, *arr,res=0;
- arr = (int*) malloc((strlen(str)+1)*sizeof(int));
- while (str[i]!='\0')
- {
- chartoascii =(int)(str[i]);
- if ((chartoascii>47)&&(chartoascii<58))
- {
- arr[i]=str[i]-'0';
- i++;
- }
- else
- {
- break;
- }
- }
- c=i;
- i=0;
- while ((arr[i]<10) && (arr[i]>=0))
- {
- res=res+(arr[i]*pow(ten,c-1));
- i++;c--;
- }
- free(arr);
- return res;
- }
Решение задачи: «Пользовательская функция преобразования строки в число типа int»
textual
Листинг программы
- for(n=0; *str >= '0' && *str<='9'; str++) {
- n = 10*n + *str - '0';
- }
Объяснение кода листинга программы
В данном коде реализована пользовательская функция, которая выполняет преобразование строки в число типа int.
- Переменная
n
инициализируется значением 0. Она будет использоваться для хранения результата преобразования. - В цикле for происходит перебор символов строки, начиная с первого символа и до тех пор, пока текущий символ больше или равен '0' и меньше '9'. Это условие позволяет перебрать только цифры.
- Для каждого символа выполняется следующая операция: к текущему значению переменной
n
добавляется 10 в степени, равной количеству цифр, которые были перебраны до текущего символа, и к этому результату прибавляется значение текущего символа, уменьшенное на '0'. Это позволяет преобразовать каждую цифру в соответствующее ей число и добавить его к общему результату. - После завершения цикла, в переменной
n
будет храниться результат преобразования строки в число типа int.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д