Olá eu gostaria de retorna um vetor para a main e imprimer ele mais n consigo

sou novo na programação e gostaria de retornar um vetor de dentro de um função e imprimir ele na main principal mais n estou conseguindo

char func(int tamanho);

int main(){

    setlocale(LC_ALL, "Portuguese");
    
    int tamanho;
        
    printf("Digite o tamanho do vetor: ");
    
    scanf("%d", &tamanho); 
    
    func(tamanho);
    
    printf("%s", vetor[i]);
    

}
char func(int tamanhovetor)
{ 
    int i;
    char vetor[i];
    
    for (i = 0; i < tamanhovetor; i++) 
    {
        printf("fale o numero a ser armazenado no vetor: ");
        scanf("%s", &vetor[i]);
    }
    
    return(vetor[i]);
            
}

Ola

não é possivel retornar um array propriamente dito por conta da forma como o C usa a pilha de retorno.

vc pode retornar um ponteiro. porém aqui entra um problema: quando vc declara vetor[ tamanho ] isso existe apenas dentro do bloco lexico (no caso, func). saiu do bloco lexico a variavel não é mais visivel. pior quando a função terminar toda a memoria que foi alocada no processo fica disponivel para ser usada de novo portanto é PERIGOSO vc retornar um ponteiro pra uma variavel local.

vc tem duas opções:

  1. vc aloca dinamicamente memoria via malloc dentro de func e retorna o ponteiro ‘vetor’. lembre-se de desalocar a memoria com free ao final ( desnecessario pois o processo vai acabar e tudo vai ser liberado MAS é boa pratica pensar que todo o malloc exige um free.

  2. vc declara o vetor dentro de main e passa o endereço de memoria dele para func.

agora tem um problema: para declarar um vetor vc precisa saber o tamanho do mesmo. tudo leva a crer que vc precisa usar malloc pra resolver o seu problema.

agora por favor, observa que vetor[i] é “o elemento i do vetor”, então nao faz sentido vc usar isso quando vai declarar ou quando vai retornar. vc aparentemente precisa praticar mais C + arrays e o meu conselho é praticar bastante até que vc entenda como isso funciona antes de separar o seu codigo em diferentes funções. vc esta colocando “o carro na frente dos bois” desse jeito. pra vc ter uma ideia eu comecei a carreira programando em C 18 anos atrás e mesmo hoje eu não consigo fazer determinadas coisas sem olhar na documentação e sem encontrar warnings/erros inesperados. praticar é preciso!

eu acredito que o seu codigo nem compila ( ou vai gerar diferentes warnings ). tente estudar sobre cada erro de compilação e warning que vc vê ( joga no google a mensagem ) que vc vai aprendendo como evitar cada coisa.