atoi c



C проверка на число

Автор Николай Фидченко задал вопрос в разделе Другие языки и технологии

C++ Проверка правильности ввода данных. и получил лучший ответ

Ответ от Connection terminated[гуру]
cin.getline(c, 50); вместо cin>>c попробуй.
т. к. ты указал только одну переменную, cin и читает один параметр ввода, оставляя остальные в буффере.

Ответ от Ѐамиль Насибуллин[гуру]
Есть несколько вариантов (код писать не буду, т. к. С++ не знаю, объясню только логику) , итак:
1) Можно сделать запрет на ввод любых символов кроме цифр, запятой или точки. А запятую или точку чтоб можно было ввести не более одного раза. Т. е. эдакая проверка, срабатывающая на ввод символа, и отображающего только в случае если он разрешен. Тогда и пробел даже не введёшь.
2) Можно брать только первое число, если введены несколько через пробел. Т. е. написано вот для пользователя "введите число", пользователь вводит несколько чисел, программа берет только первое, а на остальные забивает, вот и всё.
3) Самое простое - сделай ввод числа не через текстовое поле, а через ползунок, который пользователь выставляет в нужное положение. Таким образом, и минимум-максимум строго ограничены, и число будет строго одним

Ответ от Serg Serg[гуру]
полная херня

Ответ от Ўрий-17[гуру]
#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
char c,s[3]={0,0,0};
int k=0;
for(;;)
{
while(!kbhit()); c=getch();
if(!c) c=getch();
if(c==13) if(atoi(s)) break;
if(c==0x08) if(k) s[--k]=0,cout<<" ";
if(k < 2)
{
if(k)
{
if(s[0]==48) if(c>=49&&c<57) s[k++]=c;
if(s[0]==49) if(c>=48&&c<57) s[k++]=c;
if(s[0]==50) if(c==48) s[k++]=c;
}
else
if(c >= 48&&c < 57) s[k++]=c;
cout << '
' << s;
}
}
k=atoi(s);
cout << "
Введён вариант № " << k << endl;
}

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: C++ Проверка правильности ввода данных.
Atoi на Википедии
Посмотрите статью на википедии про Atoi
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*