O programa não recupera exatamente o que foi salvo em arquivo binário (C)

Fiz esse código usando pesquisa pela internet:

    #include <stdio.h>
        
typedef struct {
        char nome[50];
        char cpf[11];
        } Pessoa;
        
Pessoa pessoa[3];

void entrar_dados() {
    int i;
    for (i=0; i<3; i++) {
	printf (">>> Registro numero: %d\n", i+1);
	printf("Nome: ");
	scanf("%[^\n]s", pessoa[i].nome);
	getchar();
	printf("CPF: ");
	scanf("%[^\n]s", pessoa[i].cpf);
	getchar();
    }
}

int escrever_arquivo(Pessoa pessoa[])
{
	int i;
	int len_vet = sizeof(pessoa) - 1; // tamanho do vetor
	FILE * arq;

	// abre o arquivo para escrita no modo append (adiciona ao final)
	arq = fopen("dados.bin", "ab");

	if(arq != NULL)
	{
		for(i = 0; i < len_vet; i++)
			// escreve cada elemento do vetor no arquivo
			fwrite(&pessoa[i], sizeof(Pessoa), 1, arq);
		fclose(arq); // aborta o programa
		return 1;
	}
	else return 0;
}

int ler_arquivo(Pessoa aux_pessoas[3])
{
	// abre o arquivo para leitura
	FILE * arq = fopen("dados.bin", "rb");

	if(arq != NULL)
	{
		int indice = 0;
		while(1)
		{
			Pessoa p;

			// fread ler os dados
			// retorna a quantidade de elementos lidos com sucesso
			size_t r = fread(&p, sizeof(Pessoa), 1, arq);

			// se retorno for menor que o count, então sai do loop
			if(r < 1)
				break;
			else
				aux_pessoas[indice++] = p;
		}
		fclose(arq); // fecha o arquivo
		return indice;
	}
	else return 0;
}



int main() {
    int len_vet, i;
    Pessoa aux_pessoas[3];

    entrar_dados();
    if (escrever_arquivo(pessoa)) {
        len_vet = ler_arquivo(aux_pessoas);
	if (len_vet == 0) 
	    printf("\nErro ao abrir o arquivo para leitura!\n");
        for(i = 0; i < len_vet; i++)
        {
	    printf (">>> Registro numero: %d\n", i+1);
	    printf("Nome: %s\n", aux_pessoas[i].nome);
	    printf("CPF: %d\n", aux_pessoas[i].cpf);
        }
     } else printf("\nErro ao abrir o arquivo para leitura!\n");
    return 0;
}

Com relação aos dados que entro pelo teclado e salvo no arquivo “dados.bin”, na hora de recuperar as informações, recupera nome direitinho, mas cpf não é exatamente o que inseri na entrada de dados.
É a primeira vez que lido com a parte de arquivos de C, e faz algum tempo que não mexo nessa linguagem. Esse programa para um trabalho da faculdade. O prazo para a entrega do trabalho é 20/11/2020.
Se alguém puder me ajudar a resolver esse problema, agradeço.

Aguardo retorno.

Obrigado,