Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для USHЁL
0 / 0 / 1
Регистрация: 15.11.2009
Сообщений: 93

Готовый код.Подскажите,как ограничить ввод строки.

02.07.2010, 21:17. Показов 1687. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как правильно ограничить строку при помощи strncpy,"вводимую" сразу в переменную структуры?


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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <cstdlib>
#include <iostream>
#include <new>
#include <cstring>
struct chaff
{
    char dross[20];
    int slag;
};
char buf[50];////BUFFER 
using namespace std;
 
int main(int argc, char *argv[])
{
    /*chaff GP[2] = {{"general p",9},//0
                   {"two posit",7} //1
                  };*/
    char input;
    char ddrs;
    int intslag;
    chaff * p1 = new (buf) chaff[2];
     cout<<"vvedite 'char dross' i 'int slag':"<<endl;
     for(int i=0;i<5;i++)
      {
       //cin.getline(p1[i].dross,20);
       cin>>ddrs;
       strncpy(p1[i].dross,ddrs,19)
        p1[i].dross[19] = '\0';
       cin>>intslag;
       cin.get();
       p1[i].slag = intslag;
      }
      cout<<"vivod dannih i adresov\n";
     for(int i=0;i<5;i++)
       {
         cout<<p1[i].dross<<" po adresu "<<&p1[i].dross<<" ;";
         cout<<p1[i].slag<<" po adresu "<<&p1[i].slag<<endl;
       }
    system("PAUSE");
    return EXIT_SUCCESS;
}
В таком вот варианте вроде работает,но если происходит переполнение массива,программа завершается:

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
int main(int argc, char *argv[])
{
    /*chaff GP[2] = {{"general p",9},//0
                   {"two posit",7} //1
                  };*/
    char input;
    char ddrs;
    int intslag;
    chaff * p1 = new (buf) chaff[2];
     cout<<"vvedite 'char dross' i 'int slag':"<<endl;
     for(int i=0;i<5;i++)
      {
       cin.getline(p1[i].dross,20); 
       cin>>intslag;
       cin.get();
       p1[i].slag = intslag;
      }
      cout<<"vivod dannih i adresov\n";
     for(int i=0;i<5;i++)
       {
         cout<<p1[i].dross<<" po adresu "<<&p1[i].dross<<" ;";
         cout<<p1[i].slag<<" po adresu "<<&p1[i].slag<<endl;
       }
    system("PAUSE");
    return EXIT_SUCCESS;
}
p.s.Как можно в этой программе использовать обычную операцию new для выделения буфера памяти?
C++
1
char * pb = new char[50]
, т.е. потом использовать в коде указатель pb вместо массива buf:
C++
1
chaff * p1 = new (pb) chaff[2];
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.07.2010, 21:17
Ответы с готовыми решениями:

Подскажите, как добавить проверку на ввод букв? код внутри
чтобы при вводе буквы выдавало ошибку и просило заново ввести число #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include...

как ограничить ввод
нужно ограничить ввод температур от5,00 до 50,00 как это сделать? void __fastcall TForm3::Edit1KeyPress(TObject *Sender,...

Как ограничить ввод типа данных?
как сделать так чтобы при использовании оператора cin можно было ограничить тип ввода данных. а именно чтобы при вводе символов в выдавала...

1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
03.07.2010, 00:32
В таком вот варианте вроде работает,но если происходит переполнение массива,программа завершается:
Юзайте массив больше... Или ловите исключения
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.07.2010, 00:32
Помогаю со студенческими работами здесь

Как ограничить ввод в массиве?
Всем добрый день. Начинаю учить Java. Есть задача, реализацию которой хочу сделать через массив. Все удачно, но возник вопрос. ...

Нужно ограничить ввод. Как сделать ?
Есть программа, считает площадь треугольника. Вводятся две переменные. Как сделать, чтоб при вводе символа, отрицательного числа программа...

Как ограничить ввод букв в Edit в C++?
Как сделать, чтоб в компонент Edit можно было вводить только буквы, либо же только цифры? Или как сделать,чтоб при вводе букв в поле...

Как ограничить ввод данных в textarea
Мне нужно сделать так: Чтобы, если количество символов в textarea превышает N, то вывести сообщение о том, что превышает, и обрезать...

Обнуление и смещение в начало строки элементов квадратной матрицы (готовый код, найти косяк)
Условие: Создать массив размерностью N×N (описать константу и задать размер по умолчанию равный 10). Разработать процедуру заполняющую...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru