
*-- To Tell The Truth --*
Cruz
MAIL
HOME
|
 |
2001年07月10日(火) ■ |
 |
小物製作 |
 |
金額データを受け取るのだが、そのデータは+000035000 なんて形の固定長。 ビジュアル的に、このままだと客受けしないので、 金額らしい文字列に変換する関数を作成する。
// 金額文字列変換関数 char *cmn_Money(char *cpBaseMoney) { char *p = (char *)malloc(sizeof(cpBaseMoney) + 1); char *m = (char *)malloc(sizeof(cpBaseMoney) + 4); int ip; int im; int iMoney; int g = 0;
iMoney = atoi(&cpBaseMoney[1]);
memset(p, 0, sizeof(p)); memset(m, 0, sizeof(m)); sprintf(p, "%d", iMoney);
ip = strlen(p); if(ip < 4) im = ip + 2; /* カンマなし、符号、\ */ else if(ip < 7) im = ip + 3; /* カンマ1つ、符号、\ */ else im = ip + 4; /* カンマ2つ、符号、\ */
while(1){ if((g != 0) && ((g % 4) == 0)){ m[im] = 0x2c; /* , 代入 */ m[--im] = p[ip]; }else{ m[im] = p[ip]; } if(ip == 0){ m[im] = p[ip]; break; } im--; ip--; g++; }
// 符号と\をつける m[--im] = 0x5c; /* \ 代入 */ m[--im] = cpBaseMoney[0]; return m; }
+000035000な金額データを+\35,000に変換する。 受け取るデータが符号付10桁の固定長(数値部分は9桁)って決まっているので、 付加するカンマの数も数値9桁以上には対応させていない。 なんでwhileループが無限になっていてip==0条件で抜けているかとか、 そのへんの細かいことは、その時の気分で作っているので聞かないで・・・。
ちなみに","と"\"が、文字コード0x2c、0x5cとなっているのは、 このプログラムがwinで動くから。(s-jisってこと)
|
|