Viendo tu código no he visto nada raro, así que lo he probado a ver cómo funcionaba y no me arroja ningún error:
Código C:
Ver original#include <cstdio>
#include <cstring>
void center(char *s, int w)
{
if(w<1)
{
w=80;
}
int pad=0;
if(len>=w)
{
pad=(w-len)/2;
}
printf("%*.*s%s\n", pad
, pad
, " ", s
); }
int main()
{
char frase[]="Vamos a centrarnos";
center(frase,10);
return 0;
}