Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
plag
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 9
#1

gets() проверка ввода - C++

01.01.2013, 23:12. Просмотров 559. Ответов 4
Метки нет (Все метки)

возникло слабое звено в программке
C++
1
2
3
4
5
6
...
max_length = 100;
line = new char[max_length];
...
gets(line);
...
вопрос такой: как защитить программу от ввода строки больше 100 символов или как с генерировать исключение
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.01.2013, 23:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос gets() проверка ввода (C++):

Visual C++ проверка ввода на число, проверка на кирилицу - C++
Суть ввести с клавиатуры нечто, и повторять ввод до тех пор пока введенное число не будет числом. Этот код проверяет на буквы и знаки,...

Проверка ввода - C++
Как можно проверить вводимые данные, являются ли они числом. Допустим если ввели "08098рррр9" - запросить повторный ввод, а если "43543"...

Проверка ввода - C++
Всем привет. Прошу обясните мне как зделать проверку вводимых даных. Мне нужно к примеру задать числовой масив типа (int). Как зделать так...

Проверка ввода - C++
Как ограничить ввод символов в программе!!!! На каждый символ, который был введен выдавать сообщение о неправильном вводе????? Надо чтоб...

Проверка ввода - C++
Здравствуйте, помогите, пожалуйста, написать функцию для обработки неправильного ввода символов. Программа для высчитывания логических...

Проверка ввода - C++
Доброго вам времени суток. Бывалые, подскажите неопытному, как лучше писать? И если несложно, то скажите почему. for(;;) { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
02.01.2013, 00:13 #2
plag, fgets можно ввести определенное число символов.
Цитата Сообщение от plag Посмотреть сообщение
или как с генерировать исключение
Читать посимвольно, и в случаи если покажется что много символов, то кинуть какой-нибудь эксепшен.

Добавлено через 22 секунды
plag, только все это функции языка Си.
0
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,256
Завершенные тесты: 2
02.01.2013, 00:46 #3
Можно сделать так =)
C++
1
cin.getline(line, max_length);
Добавлено через 1 минуту
или
C++
1
2
3
char temp;
for(int i = 0; i < max_length; i++)
line[i] = getc(temp);
1
nonedark2008
909 / 648 / 134
Регистрация: 28.07.2012
Сообщений: 1,760
02.01.2013, 01:08 #4
Если пользуешься Visual Studio(Не уверен, есть ил это в других), то есть безопасный вариант функции gets_s.
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
02.01.2013, 02:07 #5
Так можно читать не более, чем необходимо(всё лишнее будет игнорироваться)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <limits>
 
std::istream& readln(char* buf, std::streamsize n, std::istream& stream = std::cin) {        
    
    if(!stream.getline(buf, n) && !stream.eof()) {
    
        stream.clear();
        stream.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }    
    
    return stream;
}
 
int main() {
    
    const int n = 11;    
    char buf[n];
    
    for(int i = 0; i < 5; ++i) {
            
        if(!readln(buf, n))
            return 1;
        
        std::cout << buf << std::endl;
    }
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2013, 02:07
Привет! Вот еще темы с ответами:

C++ проверка ввода - C++
Ребят помогить пожалуста разобраться не работает чертова проверка ввода я в коментарии вынес текст ошибки гляньте ... // laba1.cpp:...

Проверка на правильность ввода C++ - C++
Приветствую Возник вопрос, написал небольшую программку для вычисления корней квадратного уравнения. Проверки все работают. Остается...

Проверка ввода данных - C++
Добрые день! Нужна помощь Нужно осуществить проверку ввода. Имя. если пользователь ввел цифру в имени, выдавало &quot;Try again&quot; Код....

Проверка ввода символов - C++
Преподаватель сказала сделать проверку ввода, чтобы вводить можно было только буквы(кириллицу). В тетрадке она мне написала, каким...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.01.2013, 02:07
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru