さぁ、これが俺様の書いたコードだ!
試してないので、動かなかったらスマソ

void foo ( char *p, int n ) {
int i ;
p += i = sprintf( p, "%d", n ) ;
p[i=(i-(n<0)-1)/3] = '\0' ;
while(i--) p -= 3, p[i+3] = p[2], p[i+2] = p[1], p[i+1] = *p, p[i] = ',' ; }

綺麗・汚いを判断するかは個人的な趣味なので、とやかく言うんじゃねぇぞ!