- 论坛徽章:
- 1
|
原帖由 lenovo 于 2006-4-25 22:17 发表
你不把FormatMoney贴出来有什么用呢?
因为我看到上面的程序可以说明问题了,单独调用并没有问题啊。用fprintf时才出问题了的亚。
不过还是把程序帖出来吧(因为不是我写的,所以。。。)
- char * FormatMoney(double pamount)
- {
- char tmp[16],buf[17],buffer[24];
- char amount[32];
- static char formatm[64];
- int len, i,j,k;
- memset(formatm, 0, sizeof(formatm));
- sprintf( amount, "%.0lf", pamount * 100 );
- len=strlen(amount);
- if( (len > 15) || (len ==0 ) )
- return NULL;
- strcpy(tmp,amount);
- if(len<=2){
- sprintf(formatm,"0.%02d",atoi(tmp));
- return formatm;
- }
- else
- sprintf(formatm,".%s",tmp+len-2);
- tmp[len-2]=0;
- len-=2;
- if(len<=3){
- strcpy(buffer,formatm);
- sprintf(formatm,"%s%s",tmp,buffer);
- return formatm;
- }
- j=len/3;
- k=len%3;
- i=0;
- while(1){
- strcpy(buffer,formatm);
- if(i!=j){
- strcpy(buf,tmp+k+3*(j-i-1));
- if(i==0)
- sprintf(formatm,"%s%s",buf,buffer);
- else
- sprintf(formatm,"%s,%s",buf,buffer);
- tmp[k+3*(j-i-1)]=0;
- i++;
- }
- else{
- if(k==0)
- break;
- strcpy(buf,tmp);
- sprintf(formatm,"%s,%s",buf,buffer);
- break;
- }
- }
- return formatm;
- }
复制代码 |
|