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

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

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

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

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

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

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

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

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

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

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

Проверка правильности ввода - C++
Пишу программу С++ в консоле в RAD Studio. Программа представляет собой задачу. Пользователь вводит число, а программа решает. Мне нужно...

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

Добавлено через 22 секунды
plag, только все это функции языка Си.
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,256
Завершенные тесты: 2
02.01.2013, 00:46     gets() проверка ввода #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);
nonedark2008
889 / 628 / 126
Регистрация: 28.07.2012
Сообщений: 1,697
02.01.2013, 01:08     gets() проверка ввода #4
Если пользуешься Visual Studio(Не уверен, есть ил это в других), то есть безопасный вариант функции gets_s.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2013, 02:07     gets() проверка ввода
Еще ссылки по теме:

Проверка ввода данных - C++
Задача 1 такая: &quot;Введите 1, для вычисления среднего арифметического, введите 2, для вычисления среднего геометрического&quot;. Решил я её так,...

Проверка ввода данных в C++ - C++
printf(&quot; Laboratornaya rabota №1 \n\n&quot;);/* название */ printf(&quot;Vvedite pervoe poloshitelnoe chislo \n&quot;);/* подсказка */ ...

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

Проверка ввода данных в C++ - C++
/* Программа сложения */ #include &lt;math.h&gt;/* подключение математической библиотеки */ #include &lt;stdio.h&gt;/*подсоединение раздела...

Проверка ввода чисел - C++
Есть цикл: struct WvsB{ int PLAYER; int PLAYER1; }; ---

Проверка правильности ввода - C++
1)Вывести ошибку в консоль, если в символ пользователь пытается вбить строку. 2)Вывести ошибку в консоль, если строка не является...


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

Или воспользуйтесь поиском по форуму:
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
02.01.2013, 02:07     gets() проверка ввода #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;
    }
}
Yandex
Объявления
02.01.2013, 02:07     gets() проверка ввода
Ответ Создать тему
Опции темы

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