)) Так. По перше. Не зважаючи на роботу коду у головній функції в printf, Ви до буферу копіюєте слово. Коли Ви викличете latinize один раз, то вона спрацює і видасть правильний результат.
А от у Вашому випадку, виклик двічі приводить до перезапису Буферу, тобто перший раз виклику
, а другий -
. Поверх попереднього результату запише інший...
По друге,
printf("%s %s", latinize("pig", buf), latinize("latin", buf));
- Виведе результат на екран тільки у тому випадку, коли в середині неї завершать роботу виклики інших функцій, а саме latinize("pig", buf), latinize("latin", buf). А оскільки Буфер в якому збереглись результати роботи програми один, то і результат Вашої роботи буде дублюватись, крім того, ще й неправильно...