Доброго времени суток!
вот тут у меня проблема появилась, в универе тесты пошли... задали написать прогу. о чем прога не столь важна, важно то что весь инпут от юзера должен быть проверен, то есть юзер не должен вводить букву или символ в поле куда нужно вводить только цифры!
попробовал "isdigit" из ctype.h библиотеке, не подходит!
т.к. там используется char, в которое сканиться значение и дальше проверяется была ли это цифра или букфа/символ, а у меня изначально "int" должен быть! а так же можно проверить число только с одной цифрой от 0 до 9! а если мне нужен 3х-значный номер? то оно уже не подходит т.к. проверит только первый номер из 3х цифр!
дальше... спросил у учительницы сегодня... она посоветовала такой вариант:
if ( scanf("%d", &input) == 1 )
очень замечательно! все работает и все проверяет! только вот загвоздка если юзер ввел не правельно мне нужно дать ему 2-ю, 3-ю..... нную попытку пока введет верно, соответственно делаю это все в while loop
вот так:
[code]#include <conio.h>
#include <stdio.h>
main()
{
int input, correct;
do
{
printf("input: ");
if ( scanf("%d", &input) == 1 )
{
printf("true\n");
correct =1;
}
else
{
printf("false\n");
}
}
while (correct != 1);
printf("Exit");
getch();
}[/code]
но как только я в input ввожу букву, мой while loop просто крашиться и становиться бесконечным не взерая на то что по идее он должен остановиться опять на "scanf" стэйтменте...
нашел одно решение, но оно мне кажется не очень проффесиональным.
если в int про сканировать букву/символ то в int сохраниться 7ми-значное число, таким образом сделав
[code]
if (input > 999999)
{
printf("пошел нафиг");
}
[/code]
но как то мне это решение не нравиться! может подскажите что еще можно придумать? в Google не нашел
Thread: Question To Prgramers (C)
Results 1 to 6 of 6
-
26.11.2009 02:26
-
26.11.2009 09:42
[quote=Archy;159625]
но как то мне это решение не нравиться! может подскажите что еще можно придумать? в Google не нашел [/quote]
Переведись на гуманитарный!!
-
- Join Date
- Jun 2007
- Location
- Saint-Petersburg
- Posts
- 124
26.11.2009 13:21Code:int input; printf("input: "); while (scanf("%d", &input) != 1) { printf ("wrong input. try again.\n"); fflush(stdin); } printf("Exit");
-
26.11.2009 13:32
да у нас тут полно прогеров! вспоминая ДФ каждый 2-й писал скрипты...
[quote=grumman;159633]Переведись на гуманитарный!![/quote]
зачем сразу оскорблять и рубить все начинания на корню?
не такой уж я и дурак! и гуманитарий у меня вообщье не идет! не языки ни история... а вот с тех наукой всегда было не плохо! и в школе ездил на Олимпиады по Физики, Химии, Математики, экономики! а по истории имел трояк
-
-
Thread Information
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)