snprintf pour la concaténation de chaînes

Je suis à l'aide de snprintf pour concaténer une chaîne de caractères dans un tableau de char:

char buf[20] = "";
snprintf(buf, sizeof buf, "%s%s", buf, "foo");
printf("%s\n", buf);
snprintf(buf, sizeof buf, "%s%s", buf, " bar");
printf("%s\n", buf);

Le problème est le deuxième concaténation de buf au lieu d'ajouter "bar"remplace "foo" avec elle. La sortie est identique:

foo
bar

La première %s devrait garder buf (qui dans ce cas est titulaire d'"foo"). Et la deuxième %s doit joindre "bar". Droit?

Ce que je fais mal?

source d'informationauteur Jermin Bazazian