Пользовательская функция преобразования строки в число типа int - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задание: создать свою функцию работающую как atoi(функция преобразования строки в число типа int). Прошу вас поправить мой код, т.к. сам не могу понять в чем проблема, с однозначными и двузначными числами работает правильно, а дальше через раз.
Листинг программы
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <malloc.h>
  5. #include <math.h>
  6. #define ten 10
  7. int ft_atoi(char *str);
  8. int main(){
  9. char my_str='0';
  10. puts("Write a number");
  11. scanf("%s", &my_str);
  12. printf("\nResult\t%d\n", ft_atoi(&my_str));
  13. system("pause");
  14. return 0;
  15. }
  16. int ft_atoi(char *str)
  17. {
  18. int i=0, chartoascii, *arr,res=0;
  19. arr = (int*) malloc((strlen(str)+1)*sizeof(int));
  20. while (str[i]!='\0')
  21. {
  22. chartoascii =(int)(str[i]);
  23. if ((chartoascii>47)&&(chartoascii<58))
  24. {
  25. arr[i]=str[i]-'0';
  26. i++;
  27. }
  28. else
  29. {
  30. break;
  31. }
  32. }
  33. c=i;
  34. i=0;
  35. while ((arr[i]<10) && (arr[i]>=0))
  36. {
  37. res=res+(arr[i]*pow(ten,c-1));
  38. i++;c--;
  39. }
  40. free(arr);
  41. return res;
  42. }

Решение задачи: «Пользовательская функция преобразования строки в число типа int»

textual
Листинг программы
  1. for(n=0; *str >= '0'  && *str<='9'; str++) {
  2.   n = 10*n + *str - '0';
  3. }

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

В данном коде реализована пользовательская функция, которая выполняет преобразование строки в число типа int.

  1. Переменная n инициализируется значением 0. Она будет использоваться для хранения результата преобразования.
  2. В цикле for происходит перебор символов строки, начиная с первого символа и до тех пор, пока текущий символ больше или равен '0' и меньше '9'. Это условие позволяет перебрать только цифры.
  3. Для каждого символа выполняется следующая операция: к текущему значению переменной n добавляется 10 в степени, равной количеству цифр, которые были перебраны до текущего символа, и к этому результату прибавляется значение текущего символа, уменьшенное на '0'. Это позволяет преобразовать каждую цифру в соответствующее ей число и добавить его к общему результату.
  4. После завершения цикла, в переменной n будет храниться результат преобразования строки в число типа int.

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


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

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

7   голосов , оценка 3.714 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы