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

Символьная строка в функции get_string() не выводится в методе print - C++

Восстановить пароль Регистрация
 
ShookTrooper
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 3
19.03.2012, 20:59     Символьная строка в функции get_string() не выводится в методе print #1
Введенная символьная строка в функции get_string() не выводится в методе print.
В чем ошибка??? Заранее спасибо!

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# include <iostream.h>
# include <conio.h>
# include <math.h>
# include <stdio.h>
# include <stdlib.h>
//------------------------------------------------------------------------------------------------------------------------------------------------------------------
class String
{
    private:
        char* str;
        int n;
 
    public:
    //default constructor
    String () {}
 
    //copy constructor
    String (String & s)
    {
        n=s.n;
            set_string(s.str);
    }
 
    //constructor with params
    String(int size, char *s)
    {
        n=size;
         str=new char[n];
         for (int i=0; i<n; i++)
            str[i]=s[i];
    }
 
      //destructor
      ~String()
      {
            delete []str;
      }
 
      void set_string(char* s)
      {
         for (int i=0; i<n; i++)
            str[i]=s[i];
      }
 
      void print_str()
      {
         cout<<endl;
         for (int i=0;i<n;i++)
        cout<<str[i];
        }
};
 
char* get_string(int k)
{
    char* t;
   t=new char[k];
   gets(t);
    return t;
}
 
 
 
int main()
{
    int size=80;
 
   String ob(size,get_string(size));
   ob.set_string(get_string(size));
   ob.print_str();
    getch(); return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
 Аватар для vxg
2669 / 1680 / 158
Регистрация: 13.01.2012
Сообщений: 6,281
19.03.2012, 21:29     Символьная строка в функции get_string() не выводится в методе print #2
как вариант - вы записываете в поток ровно 80 символов вне зависимости от фактического положения нулевого символа окончания строки. соответственно в поток могут пойти неопределенные символы за пределами динамически выделенной памяти и все это может сопровождаться широким спектром чудес начиная от "кракозябликов" и заканчивая "access violation"
ShookTrooper
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 3
19.03.2012, 21:54  [ТС]     Символьная строка в функции get_string() не выводится в методе print #3
хм.. ну если в майне перед getch() вставить
C++
1
puts(get_string(size));
, то выведет правильно же

Добавлено через 20 минут
up
up
up
vxg
Модератор
 Аватар для vxg
2669 / 1680 / 158
Регистрация: 13.01.2012
Сообщений: 6,281
20.03.2012, 13:47     Символьная строка в функции get_string() не выводится в методе print #4
сказано -
Цитата Сообщение от vxg Посмотреть сообщение
может сопровождаться широким спектром чудес
почему же просто не попробывать сделать по человечески?
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
20.03.2012, 14:10     Символьная строка в функции get_string() не выводится в методе print #5
Цитата Сообщение от ShookTrooper Посмотреть сообщение
void set_string(char* s)
{
for (int i=0; i<n; i++)
str[i]=s[i];
}
Как минимум
C++
1
for (int i=0; i <= strlen(s); i++)
плюс нужно учитывать, что длина s должна быть меньше длины str.
Yandex
Объявления
20.03.2012, 14:10     Символьная строка в функции get_string() не выводится в методе print
Ответ Создать тему
Опции темы

Текущее время: 23:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru