Не корректная работа при копировании из строкового массива в другой строковый массив

На вход подается положительное число (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 ) ;
→ Ссылка