VB я, мягко говоря, не люблю, поэтому написал на C. Алгоритм работает, но есть одна проблема... (проявляется в С на всех платформах)
Вот код:
Код: Выделить всё
for(i=1;i<=num_snakes;i++) {
rsnake:
n=0;
printf("\tposition of snake %d:\t",i);
scanf("%d",&n);
if ((n<1) || (n>100)) {
fprintf(stderr,"Error: Invalid position entered: %d\n",n);
goto rsnake;
}
Если ввести какое-то большое число, то всё замечательно - отрабатывает и просит тоже самое значение опять.
НО!!! если ввести строку (это как бы валидэйшн - проверять его будут), то получается типа такого:
position of snake 1: Error: Invalid position entered
position of snake 1: Error: Invalid position entered
position of snake 1: Error: Invalid position entered
position of snake 1: Error: Invalid position entered
... и так до бесконечности. gdb показал, что scanf в этом случае значение переменной не изменяет (то есть остаётся 0, что нам и нужно, ибо это признак ошибки во вводимом значении), НО она просто выходит, ничего не спрашивая пользователя.
Помогите, пожалуйста!!!
Пытался что-то на MFC сорудить, но это такая гадость... нихрена не поймёшь, документации нормальной нет... Я даже не пойму как сделать аналог InputBox'a для VC++
ПО-МО-ГИ-ТЕ!!!