Перевод текста из чисел 0-9 в число - C (СИ)
Формулировка задачи:
Дан текст. Если в нём записано символы '0'-'9' перевести его в число.
#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;
}
Объяснение кода листинга программы
В этом коде задача состоит в том, чтобы перевести строку чисел в целое число.
- Строка
123456сохраняется в переменной типа char* под именем str. - В функции strtol() первый аргумент - это строка, которую нужно преобразовать, второй - это указатель на первый символ строки, третий - это основание системы счисления (в данном случае 10, что означает десятичную систему).
- Функция strtol() возвращает число, которое можно сохранить в переменной типа int под именем n.
- Проверяется, является ли последний символ строки нулевым ('\0'). Если да, то выводится число n, иначе выводится сообщение об ошибке. Список переменных:
- str - указатель на строку
123456 - n - переменная для хранения результата преобразования строки в число
- str - указатель на первый символ строки (используется в функции strtol())