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