日期:2014-05-16  浏览次数:20680 次

字符串子串翻转
#include <stdio.h>
#include <iostream.h>

void reverse(char* dst,const char* src){

  const char* p=src+strlen(src)-1;
  char* q=dst;
  char* d=q;

  while(q < dst+strlen(src))
  {
  *q=*p;
  --p;
  ++q;
  }
  *q='\0';
  q=dst;
  while(*q!='\0'){

  while(*d!=' ')
  {++d;}

  --d;
  char *s,*r;
  for(s=q,r=d;s<r;s++,r--)
  {
  *s = *s + *r;
  *r = *s - *r;
  *s = *s - *r;
  }

  d=d+2;q=d;

  }

}

int main(){

  const char* src="i love tian an men";
  char* dst=new char[strlen(src)+1];
  reverse(dst,src);
  cout<< dst <<endl;
  delete []dst;
  dst=NULL;

}


core dump了


------解决方案--------------------
while(*d!=' ')
{++d;}
前面加
if(*d!='\0')
break;