如何去掉多余的0 谢谢!!!
我用sprintf将一个float型的数字转换成一个字符串,然后再用SetWindowText显示出来,那么怎么才能去掉字符串后面多余的0 呢???
谢谢!!!
问题点数:60、回复次数:10Top
1 楼lbaby(春天来了...)回复于 2002-12-18 01:14:31 得分 2
cout.setw()?,
我所知不多,你试试看Top
2 楼earthharp(我老子是土匪)回复于 2002-12-18 01:15:43 得分 0
从字符串里就干掉。Top
3 楼wkdlee(雨凌)回复于 2002-12-18 01:49:52 得分 0
不知道怎么样把字符串里的0去掉啊?Top
4 楼SCUM(人渣)回复于 2002-12-18 02:01:14 得分 20
char * rtrim( char * str )
{
char * p = str;
while( *p++ )
{
if ( * p == '0' )
{
*p = 0;
break;
}
}
return str;
}
main()
{
char b[]="123.456000";
printf("%s\n", rtrim(b));
getch();
}
输出: 123.456Top
5 楼Zark(金陵五月)回复于 2002-12-18 03:40:03 得分 36
SCUM的办法是有问题的,例如
char b[]="102.460000";
SCUM就没辙了!
试试这段代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* trim(char* buf)
{
//- Check if there is a point, if not, never trim it
if(!strchr(buf,'.'))
return buf;
//- Find buf length
int nLen=strlen(buf);
if(nLen<=2) //- only has a point or only in format of .x (x is 0 to 9)
return buf;
//- Find the zero from right to left
for(int i=strlen(buf)-1;i>0;i--)
{
//- No zero followed
if('0'!=buf[i])
break;
//- Stop when current poistion is zero, and previous position is none zero.
if('0'==buf[i] && '0'!=buf[i-1])
{
if('.'==buf[i-1])
buf[i+1]='\0'; //- leave one zero just after point
else
buf[i]='\0';
break;
}
}
return buf;
}
void main()
{
char szText[8][200]="7.00000","7.01000",".","0.0",".0","0.","0.01","0.0100"};
for(int i=0;i<8;i++)
printf("%s\n",trim(szText[i]));
}Top
6 楼windcsn(向所有的朋友学习!)回复于 2002-12-18 08:40:51 得分 0
如果你不需要精确度的话,用sprintf的定位打印功能,同printfTop
7 楼hehe214(风之子)回复于 2002-12-18 08:57:13 得分 2
Zark(金陵五月)的方法是不错, 同意windcsn(风吹吹风) ,呵呵Top
8 楼SCUM(人渣)回复于 2002-12-19 16:54:19 得分 0
----------------------------
“么才能去掉字符串后面多余的0 呢???”
这就是为什么我那个函数名叫 rtrim() 的原因
Sorry
Top
9 楼glassshark(★★★★★★)回复于 2002-12-21 00:47:33 得分 0
/* --- The following code comes from G:\Program Files\lcc\lib\wizard\textmode.tpl. */
#include <stdio.h>
char * rtrim( char * str )
{
char * p = str;
while( *p++ );
p-=2;
while(p!=str&&*p=='0'||p!=str&&*p=='.')
*p--='\0';
return str;
}
int main()
{
char b[]="0.00";
printf("%s\n", rtrim(b));
getch();
return 0;
}
Top
10 楼glassshark(★★★★★★)回复于 2002-12-21 00:59:16 得分 0
//sorry change a code worng
#include <stdio.h>
char * rtrim( char * str )
{
char * p = str;
while( *p++ );
p-=2;
while(p>str&&*p=='0'||p>str&&*p=='.')
*p--='\0';
return str;
}
int main()
{
char b[]="0.00";
printf("%s\n", rtrim(b));
getch();
return 0;
}
Top




