Не корректная работа при копировании из строкового массива в другой строковый массив
На вход подается положительное число (3 например) ожидается что на выход получим массив (1 sheep...2 sheep...3 sheep...) реально получается при n = 1 Expected 1 sheep... Submitted 1 sheep.(0`
дайте намек, где косяк, пожалуйста.
p.s. C99
#include <stdio.h>
#include <stdlib.h>
char* count_sheep(int n) {
char result[1000];
char sheep[10] = " sheep...";
sheep[9] = '\0';
printf("%s\n", sheep);
if (n > 0){
int counter = 0;
for (int i = 1; i < n + 1; i++){
result[counter] = i + '0';
counter += 1;
printf("%d\n", counter);
for (int j = 0; j < 9; j++){
result[counter] = sheep[j];
counter += 1;
printf("%d\n", counter);
}
}
return result;
}
return 0;
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
Вы возвращаете указатель на локальный массив, а у него время существования тогда и заканчивается.
Массив результата нужно хранить не в стеке, а в статической памяти
static char result[1000];
или в куче
char * result = malloc ( 1000 ) ;