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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Целые и дробные числа http://www.cyberforum.ru/cpp-beginners/thread151249.html
на языке С как делить и умножать целое число и дробное. например 2 * 3,5 . и 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 << "ВВедите температуру по Фаренгейту" << endl; cin >> fahr; cels=5/9*(fahr-32); http://www.cyberforum.ru/cpp-beginners/thread151240.html
Поиск слов в файле C++
есть файл с текстом, нужно написать програму которая пригласит пользователя ввести слово и будет выводить предложения из файла в которых присудствует данное слово!!!
C++ Осуществить вывод строк из файла, используя массив указателей на эти строки
"Написать программу, которая считывает текст из файла и выводит на экран только предложения, не содержащие запятых. " вывод надо осуществлять с помощью массива указателей. #include <stdio.h> #include <iostream> #include <fstream> #include <clocale> using namespace std; void readf(int *pk, char** pSTRS, char fName,bool *flag1)
C++ Builder Как в функцию быстрой сортировки передать указатель на StringGrid? http://www.cyberforum.ru/cpp-beginners/thread151201.html
Доброго времени суток. Возник вопрос, как в функцию быстрой сортировки (метод Хоара), передать указатель на StringGrid. Хочу сделать сортировку в столбце, а вот как передать указатель, ни как понять не могу. void __fastcall TForm1::Button1Click(TObject *Sender) { QuickSort( , 0, StringGrid1->RowCount); } //--------------------------------------------------------------------------- int...
C++ Инкремент. Где ошибка Привет, помогите плз с кодом, некорректный результат инкремента..( #include "stdafx.h" #include <iostream> using namespace std; class SimpleCircle { public: //конструкторы подробнее

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

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

02.07.2010, 21:17. Просмотров 955. Ответов 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];
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru