charsequence — функция последовательности символов C ++ всегда возвращает пустую строку

Просто начните изучать C ++ и попытайтесь создать простую функцию, которая выполняет подстроку со следующим кодом:

char* substring(int start, int end, const char* target)
{
size_t length = strlen(target);

char result[(length + 1)];

int iterator = 0;

for(int i = start; i < length; i++)
{
if(i <= end)
{
result[iterator] = target[i];

iterator++;
}
}

result[iterator] = '\0';

cout << result << endl; // This give correct result "aya";

return result;
}

Когда я использую эти функции в основном методе:

int main(int argc, char** argv) {

char some_text[] = "Saya Makan";

char* sub = substring(1, 3, some_text); // No string returned

cout << "Substring Result is: " << sub;

return 0;
}

Это дает вывод, как это:

aya
Substring Result is:
RUN SUCCESSFUL (total time: 44ms)

Как видно из результата, моя функция не возвращает ничего, кроме пустой строки, хотя перед возвратом есть строка кода, переменная «result» правильно отображает результат. Не могли бы вы объяснить мне, что происходит внутри моей функции, я что-то упустил?

0

Решение

Вы возвращаете указатель на локальный массив, который не обязан находиться за пределами функции.

Вам нужно сделать так, чтобы буфер оставался за рамками функции, выделяя его динамически, используя malloc, И, конечно же, не забудьте free это позже.

О, только что заметил его C ++.
Так что отбросьте идею malloc а также free просто используйте std::string и не char *,

4

Другие решения

Других решений пока нет …