Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 46
1

Напишите функцию с аргументом типа char*

20.11.2013, 04:24. Показов 951. Ответов 6
Метки нет (Все метки)

Напишите функцию с аргументом типа char*. Функция должна динамически (оператором new) выделять память для массива char, размер которого соответствует размеру переданного символьного массива. Используя механизм индексирования, скопируйте символы из аргумента в динамически созданный массив (не забудьте о завершающем нулевом символе) и верните указатель на копию. Протестируйте функцию в main(), передав ей статический символьный массив, получив результат и снова передав его функции. Выведите обе строки и оба указателя, чтобы убедиться, что они относятся к разным областям памяти. Освободите динамическую память при помощи оператора delete.
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
#include <iostream>
using namespace std;
 
char * add(char *ch){
    int size=0;
    while(*(ch+size)) size++;
    
    char* mass=new char[size+1];
 
    for(int i=0;i<size;i++){
        mass[i]=ch[i];
        //cout<<mass[i];
    }
 
    mass[size]='\n';
 
    return mass;
}
 
 
void main(){
    char*p;
    p=add("11");
    while(*p)
        cout<<p++;
    delete[]p;
 
}
Может кто исправить мой говнокод?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2013, 04:24
Ответы с готовыми решениями:

Напишите функцию, аргументом которой является функция f
Напишите функцию, аргументом которой является функция F, а результатом - функция, которая...

Напишите функцию с одним аргументом, и программу проверки ее работы
напишите функцию с одним аргументом, и программу проверки ее работы(функции). В функции запрещенно...

Условие типа if( масив типа char[x] [y] != переменная типа char) не срабатывает
Создал функцию ChangeWay(). Все, кроме if(map !=ar) (обе переменные типа char) работает...

Напишите программу, которая определяет, сколько единиц содержится в двоичном представлении переменной типа char
Только начал изучать C++, не могу понять смысл цикла в данном коде и как он помогает нам...

6
В астрале
Эксперт С++
8035 / 4792 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
20.11.2013, 11:33 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstring>
 
char* copy(const char* str)
{
   const size_t length = strlen(str);
   char* dest = new char[length + 1];
   for (size_t i = 0; i < length + 1; ++i)
   {
       dest[i] = str[i];
   }
   return dest;
}
 
int main()
{
    const char* value = "11";
    char* result = copy(value);
    std::cout << value << " " << static_cast<const void*>(value) << " "
    << result << " " << static_cast<void*>(result) << std::endl;
}
1
:)
Эксперт С++
4769 / 3263 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.11.2013, 11:58 3
Цитата Сообщение от ForEveR Посмотреть сообщение
C++
1
2
3
const size_t length = strlen(str); 
char* dest = new char[length + 1]; 
for (size_t i = 0; i < length + 1; ++i)
Я бы наверное в таком случае предпочел вариант:
C++
1
2
3
const size_t size = strlen(str) + 1; 
char* dest = new char[size]; 
for (size_t i = 0; i < size; ++i)
А вообще, есть же strcpy(). Хотя зная размер можно и memcpy().
Но в данном случае вообще strdup()
0
Don't worry, be happy
17205 / 10083 / 1945
Регистрация: 27.09.2012
Сообщений: 25,158
Записей в блоге: 1
20.11.2013, 12:00 4
Цитата Сообщение от Tulosba Посмотреть сообщение
Но в данном случае вообще
Цитата Сообщение от helloy Посмотреть сообщение
Функция должна динамически (оператором new) выделять память для массива char, размер которого соответствует размеру переданного символьного массива. Используя механизм индексирования, скопируйте символы из аргумента в динамически созданный массив (не забудьте о завершающем нулевом символе) и верните указатель на копию.
!!!
2
Tulosba
20.11.2013, 12:05
  #5

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
!!!
Задание не читаю :) Главное - эффективность. :pardon:

0
В астрале
Эксперт С++
8035 / 4792 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
20.11.2013, 12:16 6
Tulosba, Вцелом логично. strcpy/memcpy это понятно, но нужно ж было именно такую копию замутить. А strdup нестандартная функция.
1
:)
Эксперт С++
4769 / 3263 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.11.2013, 12:31 7
ForEveR, я начал "лишную" +1 убирать, а там уже процесс пошел лавинообразно
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2013, 12:31

Напишите перегруженную функцию power (), которая принимает два целочисленных параметра типа int и возвращает целочисленное значение типа int
Операции над целыми числами осуществляются быстрее, чем над числами с плавающей точкой. Напишите...

Передача массива типа char в функцию
Не пойму в чем ошибка, выдает что ошибка в типе char. Объясните пожалуйста что не так. int min()...

Исправить функцию GET для типа char
Надо исправить функция GET для типа char, не могу понять,почему не выводит. #include...

Аргумент типа (const char*) несовместим с параметром типа (char*). Как исправить?
#include &quot;Table.h&quot; #include &quot;Contour.h&quot; #include &quot;TwoShape.h&quot; #include &lt;iostream&gt; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.