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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Целые и дробные числа http://www.cyberforum.ru/cpp-beginners/thread151249.html
на языке С как делить и умножать целое число и дробное. например 2 * 3,5 . и 2/3,5. интересует именно запись в обьявлении переменных.какой тип данных нужно указывать в результате,если одно число...
C++ опять о шрифтах приветствую. Имеется программа из учебника: #include <iostream> #include <clocale>; using namespace std; int main() { setlocale(LC_ALL, "Russian"); double fahr, cels; cout << endl... http://www.cyberforum.ru/cpp-beginners/thread151240.html
Поиск слов в файле C++
есть файл с текстом, нужно написать програму которая пригласит пользователя ввести слово и будет выводить предложения из файла в которых присудствует данное слово!!!
C++ Осуществить вывод строк из файла, используя массив указателей на эти строки
"Написать программу, которая считывает текст из файла и выводит на экран только предложения, не содержащие запятых. " вывод надо осуществлять с помощью массива указателей. #include <stdio.h>...
C++ Инкремент. Где ошибка http://www.cyberforum.ru/cpp-beginners/thread151195.html
Привет, помогите плз с кодом, некорректный результат инкремента..( #include "stdafx.h" #include <iostream> using namespace std; class SimpleCircle { public: //конструкторы
C++ Добавить класс в программу С классами совсем не знаком, поэтому обращаюсь к Вам) Требуется присутствие класса в коде. вот сам код: #include<conio.h> #include<stdio.h> #include<stdio.h> подробнее

Показать сообщение отдельно
USHЁL
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 93

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

02.07.2010, 21:17. Просмотров 984. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru