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

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

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

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

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

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

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
#define TRUE 1
#define FALSE 0
 
void main()
{
    setlocale(LC_ALL,"Rus");
    const char * str="123456";//TEXT
    int flag=EOF;
    while(*str){
        if(*str>='0' && *str<='9'){
            flag=TRUE;
        }
        else{
            flag=FALSE;
            break;
        }
        str++;
    }
    int n;
    if(flag==TRUE){
        n=atoi(str);
        printf("%d\n",n);
    }
    else printf("Ошибка! Текст должен состоять из символом от 0 до 9\n");
}

РЕШИЛ

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
#define TRUE 1
#define FALSE 0
 
int text(const char * a)
{
    int flag=EOF;
    while(*a){
        if(*a>='0' && *a<='9'){
            flag=TRUE;
        }
        else{
            flag=FALSE;
            break;
        }
        a++;
    }
    return flag;
}
 
void main()
{
    setlocale(LC_ALL,"Rus");
    const char * str="123456";//TEXT
    int n;
    if(text(str)==TRUE){
        n=atoi(str);
        printf("%d\n",n);
    }
    else printf("Ошибка! Текст должен состоять из символом от 0 до 9\n");
}

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

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

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

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

  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
Похожие ответы