Struct em C

Fala pessoal! Comecei a dar uma brincada com C para desenvolver mais a lógica e criei algo extremamente simples usando Struct, porém, notei algo que nunca tinha visto e busquei na documentação, mas não encontrei respostas. Acontece que quando eu crio um código solicitando a quantidade de cadastros e chamo a função que coleta os dados, ele solicita o NOME e CPF em seguida (anexo), mas caso eu tire o trecho de código que pergunta quantas pessoas eu desejo cadastrar, o erro deixa de ocorrer.

Só pra deixar claro, sou bem leigo em C. Acredito que seja algo simples, mas não consegui achar uma resposta.

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

typedef struct pessoa{
    char nome[40];
    char cpf[15];
    int idade;
    float salario;
}Pessoa;

// Coletando as informações da pessoa
Pessoa coleta_dados(Pessoa *p) {
    printf("Digite seu nome: ");
    fgets(p->nome, 50, stdin);
    printf("Digite seu cpf: ");
    fgets(p->cpf, 50, stdin);
    printf("Qual o seu salário: R$");
    scanf("%f", &p->salario);
    printf("Digite sua idade: ");
    scanf("%i", &p->idade);
    return *p;
}
int main(void) {
    

// Com esse código acontece o erro, mas caso eu o tire o erro não ocorre

    int x;
    printf("Quantas pessoas deseja cadastrar? ");
    scanf("%d", &x);

// ---------------------------------------------------------------------

    Pessoa pessoas[2];

    coleta_dados(&pessoas[0]);

    printf("%s", pessoas[0].nome);
    printf("%s", pessoas[0].cpf);
    printf("R$%.2f\n", pessoas[0].salario);
    printf("%i", pessoas[0].idade);

  return 0;
}
```![Screenshot_12|399x138](upload://x6HQp8NaWHlD17WlQqotqyuXXQk.png)

Pelo que eu testei no seu código o problema é com o buffer, segue um código exemplo a baixo.

#include <stdio.h>
#include <stdlib.h>
#define clear while(getchar() != '\n');

int main() {
    char cont='s';

    while(cont == 's') {
        printf("Deseja continuar? (s/n): ");
        clear;
        scanf("%c", &cont);
    }
    return 0;
}

link explicando o do porque isso acontece, :wink: espero que isso ajude.

Obrigado @gbmariz
Vou dar uma olhada.

Consegui resolver
na verdade, não era erro no código não, era o compilador. Eu estava usando um compilador online, quando baixei o Code Blocks e rodei o código, rodou perfeitamente.