Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] fgets и ограничение на ввод

Ответить
Настройки темы
C/C++ - [решено] fgets и ограничение на ввод

Пользователь


Сообщения: 55
Благодарности: 0

Профиль | Отправить PM | Цитировать


Нужно ограничить ввод строки пользователем до трех символов, при этом все они должны быть только цифрами. Выделять строке память вручную не подходит, ибо может случится переполнение буфера, а выделять строке тысячи символов не считаю правильным решением. Для этого решил использовать fgets, но столкнулся с проблемой: ошибка выводится несколько раз, как будто после выхода из цикла for из stdina продолжает считываться остаток строки (после первых трех символов введенной строки). Как можно запретить это?
п.с. getch и getche не подойдут, ибо пишу на unix с gcc компилятором, а работать c библиотекой ncurses.h нежелательно.
PHP код: Выделить весь код

#include <stdlib.h>
#include <stdio.h>

int main()
{
    const 
int length=3;

    
char *str=(char *)malloc((length+1)*sizeof(char));
    
    
int i=0;
    
int rule=1;
    while (
rule)
    {
        
str=(char *)malloc((length+1)*sizeof(char));
        
        
fgets(str, (length 1), stdin);
        
        for (
i=0< (length 1); i++)
        {
            if (
str[i] == '\0')
            {
                
rule=0;
                break;
            }
            
            if (
str[i] < '0' || str[i] > '9')
            {
                
printf("ERROR\n");
                
free(str);
                break;
            }
        }
    }
    
    
printf("%s",str);
    
free(str);
    
    
system("pause");
    return 
0;



Отправлено: 19:07, 30-04-2016

 

Пользователь


Сообщения: 55
Благодарности: 0

Профиль | Отправить PM | Цитировать


Проблему решил благодаря этому
PHP код: Выделить весь код

fgets(str, (length 1), stdin);
fflush(stdin); 


Отправлено: 23:15, 30-04-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] fgets и ограничение на ввод

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Запрос на ввод The_Immortal Скриптовые языки администрирования Windows 2 08-02-2016 22:39
C/C++ - Потоковый ввод и ввод с клавиатуры. Рекурсия lerenia Программирование и базы данных 14 15-05-2013 14:07
[решено] Ограничение на ввод символов в "поле ввода" zvezda_t Вебмастеру 2 08-02-2010 15:25
Ввод данных на T39 fantik Автоматическая установка Windows 2000/XP/2003 8 30-01-2007 15:32
Аналог fgets() в WinApi lehha Программирование и базы данных 5 04-05-2005 13:21




 
Переход