2014-05-26 3 views
2

У меня возникает простой вопрос, потому что я не могу найти способ вернуть строку из функции и поместить ее в другую строку. Мой код в C это:Как правильно вернуть строку в C

#include <string.h> 
#include <stdlib.h> 
#include <stdio.h> 

char *func(); 

int main() 
{ 
     char *temp = malloc(sizeof(char) * 25); 

     temp = func(); 
     printf("String received: %s\n", temp); 

     return 0; 
} 

char *func() 
{ 
     char str[25]; 

     strcpy(str, "HEY THERE!"); 
     printf("String sent: %s\n", str); 

     return str; 
} 

Я получаю этот результат: Строки отправлено: Привет! Полученная строка:

Любая идея, как это сделать правильно? Спасибо

ответ

2

Динамическая память, да, но она используется не в том месте. Подумайте об этом коде еще раз:

char *temp = malloc(sizeof(char) * 25); 
temp = func(); 

Что вы делаете, чтобы выделить память для temp, а затем присвоить ему другое значение: возвращаемое значение func(), что это утечка памяти.

Правильный способ - выделить память в func() и вернуть указатель на выделенную память. Не забудьте освободить его, когда он не используется.

+0

Я вижу, что вы говорите @Yu абсолютно правильно. Но попробуйте найти решение, temp снова кажется пустым – STRATOSpeed

+0

@STRATOSpeed ​​Теперь вы выделяете память для 'str', правильно? Как 'char * str = malloc (25);'? –

+0

Хорошо, да. Да, я очень много нашел! Вот и все :) – STRATOSpeed

Смежные вопросы