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

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

Войти
Регистрация
Восстановить пароль
 
USHЁL
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 93
#1

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

02.07.2010, 21:17. Просмотров 971. Ответов 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];
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2010, 21:17     Готовый код.Подскажите,как ограничить ввод строки.
Посмотрите здесь:

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

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

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

подскажите как ограничить временное пространство - C++
Здравствуйте.подскажите пожалуйста как ограничить диапазон чисел для часов (пример :m часов (0&lt;=m&lt;=23), n минут (0&lt;=n&lt;=59 ),и k...

как написать готовый код паскаль на с++? - C++
program elmgmv; uses Grt,Graph; var gd,gm,xd,yd:Integer; x,y,z,mx,t,dt,q,m,v,al,vx,vy,vz,fx,fy,fz:real; e,ex,ey,ez,b,bx,by,bz:real;...

Готовый код.Как перестроить структуру под класс.wxDex-C++ - C++
Всем доброго вечера и хорошего настроения! Знатоки C/C++ подскажите как &quot;переделать&quot; готовую программку для использования её с...

Ввод символьной строки. Подскажите что делаю не так? - C++
Подскажите что делаю не так? char model; хочу что бы модель можно было ввести спробелами. меняем на string mondel; значит...

Как ограничить длину вводимой строки? - C++
Короче, есть задачка: Напишите программу на &quot;родном&quot; С++, которая читает с клавиатуры число (целое) и имя (до 15 символов)....

Ввод строки типа {a,b,c,d,f,{a,b,c,f},g,h,j}, исправить код - C++
Доброго времени суток всем, в общем нужно мне реализовать такую задачу: Ввод строки типа {a,b,c,d,f,{a,b,c,f},g,h,j} Что должно быть на...

Есть готовый код C++ (Code Composer Studio). Копирование матрицы. Как исправить ошибки? - C++
т.е. это часть проекта для ЦСП на языке С, но файл исполняемой программы .out не создается из за ошибок в коде :( В С никогда не работал,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
03.07.2010, 00:32     Готовый код.Подскажите,как ограничить ввод строки. #2
В таком вот варианте вроде работает,но если происходит переполнение массива,программа завершается:
Юзайте массив больше... Или ловите исключения
Yandex
Объявления
03.07.2010, 00:32     Готовый код.Подскажите,как ограничить ввод строки.
Ответ Создать тему
Опции темы

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