/*-----------------------------------------
 * 100の位を文字へ変換
 *--------------------------------------*/
static char *process_100(char num, int *p_flag, char *p_str)
{
    char remainder_100 = num % 100;
    
    p_str[*p_flag] = ASCII_CODE_0 + 1;
    (*p_flag)++;
    
    return process_10(remainder_100, p_flag, p_str);
}
/*-----------------------------------------------------
 * 100の位を文字へ
 *---------------------------------------------------*/
static char *process_100(int8_t num, int *p_flag, char *p_str)
{
    int8_t remainder_100 = num % 100;
    
    p_str[*p_flag] = ASCII_NUMBER_0 + 1;
    (*p_flag)++;
    
    return process_10(remainder_100, p_flag, p_str);
}
/*=====================================================
 * @brief
 *     char型の数値を文字列へ変換
 * @param
 *     num:変換したい数値
 * @return
 *     str:変換した文字列を格納した配列へのポインタ
 * @note
 *     -128 ~ 127の数値
 *===================================================*/
char *char_number_to_string(char num)
{
    static char str[5];
    int  flag = 0;
    char *p_error_message = "size of number is over";

    /* num == -128 process */
    if(num == INT8_T_MINIMUM)
    {
        str[0] = '-';
        str[1] = '1';
        str[2] = '2';
        str[3] = '8';
        str[4] = '\0';
        
        return str;
    }
   
    /* For negetive number process */
    if(num < 0)
    {
        str[flag] = '-';
        flag++;
        num *= (-1);
    }

    /* converting process */
    if(MIN_100 <= num && num <= MAX_100)
    {
        return process_100(num, &flag, str);
    }
    else if(MIN_10 <= num && num <= MAX_10)
    {
        return process_10(num, &flag, str);
    }
    else if(MIN_1 <= num && num <= MAX_1)
    {
        return process_1(num, &flag, str);
    }
    else
    {
        return p_error_message;
    }

}