CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  新手乐园

求教 去除字符串后面的“*”(不能用到strlen strcpy strcat等函数)

楼主liyueliyu()2006-07-02 23:16:17 在 C/C++ / 新手乐园 提问

比如   *k*k*  
  处理后变为   *k*k  
   
  #include<conio.h>  
  #include<stdio.h>  
  void   fun(   char   a[])  
  {  
  char   *p=a   ;  
  while(*p!='\0')  
  {  
  ++p   ;  
  }  
  --p   ;  
  while(*p--=='*'     )  
  {  
  *p='\0'   ;  
  *a--=*p   ;}  
  }  
  main()  
  {  
           
  clrscr();  
          printf("input   string:");  
              gets(a);  
          fun(a);  
          puts(a);  
  }  
   
   
   
  我自己编的~~   不知道哪错了  
  大侠门帮我改改把~  
   
   
  main函数是给定的  
  子函数   形式为   void   fun(   char   a[])      
   
  问题点数:20、回复次数:7Top

1 楼boxban(冻酸梨)回复于 2006-07-02 23:25:12 得分 0

void   fun(   char   a[])  
  {  
  char*   tmp   =   a;  
   
  if   (NULL   ==   a)   return;  
  while(*tmp++)   ;  
  --tmp;  
  while(*tmp   ==   '*')   --tmp;  
  tmp[1]   =   '\0';  
  }  
  Top

2 楼liyueliyu()回复于 2006-07-02 23:27:46 得分 0

楼上的大哥不对啊~~   运行出来还是原来的没删除掉Top

3 楼Wolf0403(废人:独活十年~心如刀割)回复于 2006-07-02 23:57:48 得分 0

char   *asterisk   =   NULL;  
  while   (*s)   {  
      if   (   '*'   ==   *s   )    
          if   (   NULL   ==   asterisk   )  
              asterisk   =   s;  
      else  
          asterisk   =   NULL;  
  }  
  if   (   NULL   !=   asterisk   )  
      *asterisk   =   '\0';  
   
  和梨兄的代码思路有点区别:)Top

4 楼Wolf0403(废人:独活十年~心如刀割)回复于 2006-07-03 00:13:17 得分 0

代码写太急了,没测试,抱歉。  
   
  void   fun(   char   s[])  
  {  
  char   *asterisk   =   NULL;  
  while   (*s)   {  
  if   (   '*'   ==   *s   )   {  
  if   (   NULL   ==   asterisk   )  
  asterisk   =   s;  
  }  
  else   {  
  asterisk   =   NULL;  
  }  
  ++s;  
  }  
  if   (   NULL   !=   asterisk   )  
  *asterisk   =   '\0';  
  }Top

5 楼yingge(...木脑壳...)回复于 2006-07-03 04:14:22 得分 0

送佛送到西吧。。。  
   
  void   fun(char   *s){  
  char   *head=s;  
  while(*s){  
  head=(*s++=='*')?head:s;  
  }  
  *head='\0';  
  }  
  Top

6 楼Jim_King_2000()回复于 2006-07-03 09:39:14 得分 0

const   char   *del_asterisk(char   *lpszStr)  
  {  
  const   char   *lpszSrc   =   lpszStr;  
  assert(lpszStr);  
   
  while   (*lpszStr++);   //   get   the   one   past   the   end   of   the   string  
   
  if   (lpszStr[-2]   ==   '*')  
  lpszStr[-2]   =   '\0';  
   
  return   lpszSrc;  
  }Top

7 楼Kvci(看了不笑就没小JJ同时又比较长的昵称__——————————————————————————————)回复于 2006-07-04 09:27:46 得分 0

void   tre(char   *s)  
  {  
      if(*s=='\0')return;  
      tre(s+1);  
      if(*s=='*'&*(s+1)=='\0')     *s='\0';  
      else   return;  
  }  
  main()  
  {  
      char   *p="asd*asd***";  
      tre(p);    
      printf("\n%s",p);  
  }Top

相关问题

关键词

得分解答快速导航

  • 帖主:liyueliyu

相关链接

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

广告也精彩

反馈

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