Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 9
1

gets() проверка ввода

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

возникло слабое звено в программке
C++
1
2
3
4
5
6
...
max_length = 100;
line = new char[max_length];
...
gets(line);
...
вопрос такой: как защитить программу от ввода строки больше 100 символов или как с генерировать исключение
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.01.2013, 23:12
Ответы с готовыми решениями:

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

Проверка ввода
Была проверка на ввод букв 'a', 'b' и 'c'. Если было введено "abbcba" то значения брались, а если...

Проверка ввода
Здраствуйте! Помогите плииз! Есть два поля и кнопка. Надо сделать так чтобы при условии, если...

Проверка ввода
Есть вопрос, есть код: <!doctype html> <html> <head> <meta charset="utf-8">...

4
go
Эксперт С++
3642 / 1374 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
02.01.2013, 00:13 2
plag, fgets можно ввести определенное число символов.
Цитата Сообщение от plag Посмотреть сообщение
или как с генерировать исключение
Читать посимвольно, и в случаи если покажется что много символов, то кинуть какой-нибудь эксепшен.

Добавлено через 22 секунды
plag, только все это функции языка Си.
0
248 / 231 / 45
Регистрация: 05.02.2010
Сообщений: 3,284
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
1350 / 989 / 313
Регистрация: 28.07.2012
Сообщений: 2,746
02.01.2013, 01:08 4
Если пользуешься Visual Studio(Не уверен, есть ил это в других), то есть безопасный вариант функции gets_s.
0
1998 / 1598 / 488
Регистрация: 31.05.2009
Сообщений: 2,990
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.01.2013, 02:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Проверка ввода
Как можно проверить вводимые данные, являются ли они числом. Допустим если ввели &quot;08098рррр9&quot; -...

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

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

Проверка ввода. на С
Ребят помогите пожалуйста организовать проверку ввода. Ситуация следующая. Мне нужно организовать...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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