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

Как присоединить одну строку к другой типа const char * - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Прописывания директории в fopen http://www.cyberforum.ru/cpp-beginners/thread238634.html
Как правильно использовать ? Я пишу FILE *infile = fopen("C:\1.txt", "w"); не работает
C++ Подпрограммы Добрый день.Можете помочь написать 2 программы в borland C++ Помогите пожалуйсто.Заранее благодарен! 1)Создать подрограмму,которая за стороной "a" определяла бы периметр квадрата и его... http://www.cyberforum.ru/cpp-beginners/thread238626.html
Напишите программу, которая сортирует цифры числа по возврастанию C++
Доброго времени суток. Можно ли как-то оптимизировать решение? // Напишите программу, которая сортирует цифры числа по возврастанию #include <iostream> #include <conio.h> #include <vector>...
Конструкторы и классы C++
Возникает ошибка что нет конструктора, хотя он есть. error C2514: 'B' : class has no constructors class B; class A { B* b; A() { b=new B(2);
C++ Прога на структуры http://www.cyberforum.ru/cpp-beginners/thread238604.html
Помогите написать программы со структурами: "Ввести в комп. информацию про сотрудников отдела: Фамилия, Имя, Возраст. Вывести имена сотрудников, возраст которых превышает 28 лет" Вот написал...
C++ функция может вызывать другую функцию? функция может вызывать другую функцию? (не саму себя) или это невозможно? :cry: подробнее

Показать сообщение отдельно
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
05.02.2011, 21:07
Дык, братишка, это... Опаньки. Потому и придумали умные указатели, что непонятно, кто память освобождать будет. Исторически сложилось так, что память выделяется "снаружи" подобных функции. Т.е. так, как выполнена функция strcpy, которая принимает первым параметром указатель на уже выделенную область памяти. Так что такой подход отпадает. Зато эти функции возвращают указатель на получившуюся строку, так что можно создавать сложные однострочные конструкции.

C
1
2
3
  char *full_name = strcat(strcpy((char*)malloc(strlen(path) + strlen(file) + 1), path), file);
  printf("%s\n", full_name);
  free(full_name);
Конечно, вы вольны сделать как угодно, в том числе и выделять память внутри функции, а освобождать снаружи, но в боевой ситуации, особенно при командной разработке, так лучше не делать.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru