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

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

Восстановить пароль Регистрация
 
helloy
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 46
20.11.2013, 04:24     Напишите функцию с аргументом типа char* #1
Напишите функцию с аргументом типа 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;
 
}
Может кто исправить мой говнокод?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2013, 04:24     Напишите функцию с аргументом типа char*
Посмотрите здесь:

Написать функцию, которая переворачивает строку (массива типа char). C++
Возможно ли вызвать функцию, имя которой хранится в переменной типа char* ? C++
Аргумент типа char (*)[1000] несовместим с параметром типа char** C++
Напишите программу, которая определяет, сколько единиц содержится в двоичном представлении переменной типа char C++
Напишите функцию bool IsDigit(unsigned char c), определяющую, является ли данный символ цифрой или нет C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
20.11.2013, 11:33     Напишите функцию с аргументом типа char* #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;
}
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
20.11.2013, 11:58     Напишите функцию с аргументом типа char* #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()
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,843
Записей в блоге: 2
Завершенные тесты: 1
20.11.2013, 12:00     Напишите функцию с аргументом типа char* #4
Цитата Сообщение от Tulosba Посмотреть сообщение
Но в данном случае вообще
Цитата Сообщение от helloy Посмотреть сообщение
Функция должна динамически (оператором new) выделять память для массива char, размер которого соответствует размеру переданного символьного массива. Используя механизм индексирования, скопируйте символы из аргумента в динамически созданный массив (не забудьте о завершающем нулевом символе) и верните указатель на копию.
!!!
Tulosba
20.11.2013, 12:05
  #5

Не по теме:

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

ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
20.11.2013, 12:16     Напишите функцию с аргументом типа char* #6
Tulosba, Вцелом логично. strcpy/memcpy это понятно, но нужно ж было именно такую копию замутить. А strdup нестандартная функция.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2013, 12:31     Напишите функцию с аргументом типа char*
Еще ссылки по теме:

Напишите функцию int GetLength(char* string), определяющую длину подаваемой на вход строки C++
Исправить функцию GET для типа char C++
C++ Разработайте функцию, в которую передается массив типа char

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
20.11.2013, 12:31     Напишите функцию с аргументом типа char* #7
ForEveR, я начал "лишную" +1 убирать, а там уже процесс пошел лавинообразно
Yandex
Объявления
20.11.2013, 12:31     Напишите функцию с аргументом типа char*
Ответ Создать тему
Опции темы

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