Programa C imprimindo caracteres estranhos

Eu tenho um programa que lê o conteúdo de um arquivo e o salva embuf. Depois de ler o conteúdo, ele deve copiar dois a dois caracteres para uma matriz. Esse código funciona bem se não estou tentando ler de um arquivo, mas se eu tentar ler de um arquivo, o printf do buffer imprime os dois caracteres desejados, mas adiciona caracteres estranhos. Eu confirmei e está salvando corretamente no buf, sem caracteres estranhos por lá. Não consigo descobrir o que está errado ... Aqui está o código:

char *buffer = (char*)malloc(2*sizeof(char));
char *dst = buffer;
char *src = buf;
char *end = buf + strlen(buf);
char *baby = '\0';
while (src<= end)
{
    strncpy(dst, src, 2);
    src+= 2;
    printf("%s\n", buffer);
}

questionAnswers(1)

yourAnswerToTheQuestion