DirectX3D 学习

学习DirectX3D

字符串的颠倒

 

bool revers(char str[])
{
 
char *buffer;
 
int tokenreadpos,wordreadpos,wordend,writepos=0;

 tokenreadpos
=strlen(str)-1;

 buffer
=(char*)malloc(tokenreadpos+2);
 
if (!buffer)
 
{
  
return false;
 }


 
while (tokenreadpos>=0)
 
{
  
if (str[tokenreadpos]==' ')
  
{
   buffer[writepos
++]=str[tokenreadpos--];
  }

  
else
  
{
   wordend
=tokenreadpos;

   
while (tokenreadpos>=0 && str[tokenreadpos]!=' ')
   
{
    tokenreadpos
--;
   }



   wordreadpos
=tokenreadpos+1;
   
while (wordreadpos<=wordend)
   
{
    buffer[writepos
++]=str[wordreadpos++];
   }

  }

 }



 buffer[writepos]
='\0';
 strcpy(str,buffer);
 free(buffer);
 
return true;
}


 

//以上的程序需要分配内存。。

 

 

///*************************************************************************************

void fun(char str[],int s,int e)
{
 
char temp;
 
while (e>s)
 
{
  temp
=str[s];
  str[s]
=str[e];
  str[e]
=temp;
  s
++;
  e
--;
 }

}


void revers2(char str[])
{
 
int start=0,end=0,len;
 len
=strlen(str);

 fun(str,start,len
-1);

 
//test 
 cout<<"第一次颠倒"<<str<<endl; //

 
while (end<len)
 
{
  
if (str[end]!=' ')
  
{
   start
=end;

   
while(end<len &&str[end]!=' ')
   
{
    end
++;
   }

   end
--;

   fun(str,start,end);
   
  }


  end
++;
 }

 cout
<<"第2次颠倒"<<str<<endl; //

}


 

//以上不需要分配多余的内存

posted on 2008-09-13 15:59 xpcer 阅读(325) 评论(0)  编辑 收藏 引用 所属分类: C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

统计

常用链接

留言簿(1)

随笔分类

随笔档案

Graphics

搜索

最新评论

阅读排行榜

评论排行榜