약간의 버그와 함정 코드가 숨어있다 ㅋㅋ

#include <stdio.h>
#include <string.h>

void itoa(int num, char *str){ 
    int i=0; 
    int radix = 10;
    int deg=1; 
    int cnt = 0; 

    while(1){
        if( (num/deg) > 0) 
            cnt++; 
        else 
            break; 
        deg *= radix; 
    } 
    deg /=radix;
    for(i=0; i<cnt; i++)    {
        *(str+i) = num/deg + \'0\';
        num -= ((num/deg) * deg);
        deg /=radix;
    } 
    *(str+i) = \'\\0\';
}


void f(int input, char ch)
{
  if(input) {
    f(input-1, ch);
  }
  else {
    char sz[16];
    char * pch = NULL;
    itoa(input, sz);
    pch=strchr(sz, ch);
    while (pch != NULL)
    {
      *pch = \'*\';
      pch=strchr(pch+1, ch);
    }
    printf(\"%2s \", sz);

    if(input % 10 == 9) printf(\"\\n\");
  }
}

int main()
{
  f(40, \'2\');
}