CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

如何去掉多余的0 谢谢!!!

楼主wkdlee(雨凌)2002-12-18 01:11:05 在 C/C++ / C语言 提问

我用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

相关问题

  • 如何去掉文件多余部分?
  • 如何去掉字符串中多余的空格?
  • sql loader如何去掉多余的空格??
  • 如何在注册表中去掉我的IE标题栏上多余的标题(windows2000)
  • 请教各位高手,谢谢!!!****************如何去掉报表中数字小数点后多余的零******************急急急!!!
  • 【变态】如何去掉ActiveX控件里面多余的(从基类继承下来的)属性?
  • 如何去掉titlebar?
  • 如何去掉AM?
  • treeview中怎样去掉多余的加号。
  • php中怎样去掉多余的字符?

关键词

  • rtrim
  • buf
  • getch
  • zero
  • str
  • char
  • printf
  • main
  • break
  • include

得分解答快速导航

  • 帖主:wkdlee
  • lbaby
  • SCUM
  • Zark
  • hehe214

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo