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

Необходимо чтобы функция new добавляла к строке 3 знака восклицания - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ динамический массив строк http://www.cyberforum.ru/cpp-beginners/thread245026.html
Вот такое дело есть а как зделать так чтобы я мог ввести то количество строк что я хочю ? а не 3. Тоесть сделать динамический массив строк. #include <iostream> #include <conio.h> using...
C++ Установить, является ли одно множество подмножеством другого помогите пожалуста))) 1)Создать множества А,В,С- псевдослучайных чисел из натурального ряда; 2)Поэлементно сравнивая множества: - установить, яляется ли одно множество подмножеством другого... http://www.cyberforum.ru/cpp-beginners/thread245022.html
C++ Почему создаются новые объекты?
Всем доброго времени суток! Я не могу понять где создаются новые объекты Есть у меня простенький класс class data { char* str; public: data(): str("Hi") {} data(char* ch): str(ch)
C++ Как нарисовать
Необходимо с помощью кода нарисовать 5 квадратов, расположенные друг за другом (это будут кабинеты), а в каждом квадрате написать допустим номер кабинета или какие процедуры там проводят. Затем около...
C++ Наследование http://www.cyberforum.ru/cpp-beginners/thread244999.html
Используя механизм наследования реализовать иерархию: фигура->круг ..........->треугольник ..........->квадрат (все стрелки отходят...
C++ Написать функцию, которая удваивает каждый символ строки Народ,спасайте! Не могу написать программу! Написать функцию, которая удваивает каждый символ строки. Заголовок функции: void doubleChar (char * s); Написать программу, которая принимает от... подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5774 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
19.02.2011, 04:07
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
#include <iostream>
#include <cstdlib>
#include <cstring>
 
char* add3excl(const char*);
 
int main()
{
    const char* buf = "Hello, World";
    char* p = new char [strlen(buf) + 1];
    strcpy(p, buf);
    
    std::cout << "Original: " << p << std::endl;
    p = add3excl(p);
    std::cout << "Modified: " << p << std::endl;
    delete[] p;
    return 0;
}
 
char* add3excl(const char* buf)
{
    char* newBuf = new char [strlen(buf) + 4];
    strcpy(newBuf, buf);
    delete[] buf;
    strcat(newBuf, "!!!");
    return newBuf;
}
Статический массив newbuf у тебя - локальный, и он уничтожается после возврата из функции. Использовать указатели на временные объекты (которым и является этот массив) - плохо. Тем не менее, это не могло привести к ошибке, т.к. внутри функции add ты модифицируешь не сам указатель, а его локальную копию, т.е. само значение указателя buf из функции main не изменяется.
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru