Перевод текста из чисел 0-9 в число - C (СИ)

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

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

Дан текст. Если в нём записано символы '0'-'9' перевести его в число.

Проблема в том, что с while в n выводит 0,а без while всё нормально:
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void main()
  4. {
  5. const char * str="123456";//TEXT
  6. int n;
  7. n=atoi(str);
  8. printf("%d\n",n);
  9. }

Как исправить?

Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #define TRUE 1
  5. #define FALSE 0
  6. void main()
  7. {
  8. setlocale(LC_ALL,"Rus");
  9. const char * str="123456";//TEXT
  10. int flag=EOF;
  11. while(*str){
  12. if(*str>='0' && *str<='9'){
  13. flag=TRUE;
  14. }
  15. else{
  16. flag=FALSE;
  17. break;
  18. }
  19. str++;
  20. }
  21. int n;
  22. if(flag==TRUE){
  23. n=atoi(str);
  24. printf("%d\n",n);
  25. }
  26. else printf("Ошибка! Текст должен состоять из символом от 0 до 9\n");
  27. }

РЕШИЛ

Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #define TRUE 1
  5. #define FALSE 0
  6. int text(const char * a)
  7. {
  8. int flag=EOF;
  9. while(*a){
  10. if(*a>='0' && *a<='9'){
  11. flag=TRUE;
  12. }
  13. else{
  14. flag=FALSE;
  15. break;
  16. }
  17. a++;
  18. }
  19. return flag;
  20. }
  21. void main()
  22. {
  23. setlocale(LC_ALL,"Rus");
  24. const char * str="123456";//TEXT
  25. int n;
  26. if(text(str)==TRUE){
  27. n=atoi(str);
  28. printf("%d\n",n);
  29. }
  30. else printf("Ошибка! Текст должен состоять из символом от 0 до 9\n");
  31. }

Решение задачи: «Перевод текста из чисел 0-9 в число»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.     char *str = "123456";
  7.     const int n = strtol(str, &str, 10);
  8.     if (*str == '\0')
  9.         printf("%d\n", n);
  10.     else
  11.         printf("Error\n");
  12.     return 0;
  13. }

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

В этом коде задача состоит в том, чтобы перевести строку чисел в целое число.

  1. Строка 123456 сохраняется в переменной типа char* под именем str.
  2. В функции strtol() первый аргумент - это строка, которую нужно преобразовать, второй - это указатель на первый символ строки, третий - это основание системы счисления (в данном случае 10, что означает десятичную систему).
  3. Функция strtol() возвращает число, которое можно сохранить в переменной типа int под именем n.
  4. Проверяется, является ли последний символ строки нулевым ('\0'). Если да, то выводится число n, иначе выводится сообщение об ошибке. Список переменных:
  5. str - указатель на строку 123456
  6. n - переменная для хранения результата преобразования строки в число
  7. str - указатель на первый символ строки (используется в функции strtol())

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


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

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

15   голосов , оценка 3.8 из 5

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

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

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