Jak zwrócić ciąg znaków z funkcji do dynamicznej tabeli?

0

Witam ma program w funkcji zwracam ciąg znaków ale nie wiem jak wpisać je do dynamicznej tablicy.

#include <iostream>
#include <cstring>
#define T_SIZE 1000

char* string_merge(char *, char *);

int main()
{
    char text[T_SIZE];
    char text2[T_SIZE];
    int how_many_step = 0;
    std::cin >> how_many_step;
    for ( int i = 0 ; i < how_many_step ; ++i )
    {
        int size_tab = 0;
        std::cin >> text >> text2;
        if ( std::strlen(text) > std::strlen(text2) )
            size_tab = std::strlen(text2);
        else
            size_tab = std::strlen(text);
        int size_tab_final = size_tab * 2;
        char* text_final = new char[size_tab_final];
        text_final = string_merge( text , text2 );
        std::cout << text_final << std::endl;
        delete [] text_final;
    }
    return 0;
}
char* string_merge(char *text, char *text2)
{
    int size_tab_final = 0;
    int index = 0;
    char text_final[size_tab_final];
    if ( std::strlen(text) > std::strlen(text2) )
        size_tab_final = std::strlen(text2);
    else
        size_tab_final = std::strlen(text);
    size_tab_final *= 2;
    for ( int i = 0 ; i < size_tab_final ; ++i)
    {
        if ( i % 2 == 0 )
            text_final[i] = text[index];
        else if ( i % 2 == 1 )
        {
            text_final[i] = text2[index];
            ++index;
        }
    }
    return text_final;
}
1

Zamiast #define constexpr.
Zamiast char* std::string i nie martwić się dynamiczną alokacją.

Funkcja string_merge() jest błędna. Powinna zwracać wskaźnik na zaalokowany obszar.
Tablica wynikowa w funkcji ma rozmiar zerowy i później próbujesz do niej zapisywać znaki. (Dla zwykłych tablic powinien być stały i znany w czasie kompilacji.)
Zwrócony wskaźnik przypisz do wskaźnika char*, a na koniec zwolnij pamięć na ten obszar.

0

problem polega na tym że to jest zadanie ze spoj i muszę robić to na char a nie na stringu. http://pl.spoj.com/problems/PP0504B/

0

Zadanie ma mylący opis, ja widzę u siebie zaakceptowane rozwiązanie w pythonie.

0
#include <iostream>

char* foo()
{
    int size{5};
    char* result = new char[size];
    std::cin >> result;
    return result;
}

int main()
{
    char* text = foo();
    std::cout << text;
    delete[] text;
} 

http://ideone.com/efMv7z

1 użytkowników online, w tym zalogowanych: 0, gości: 1