基础类知识(要求严格的字符串倒退输出),求最优解法,该如何处理

基础类知识(要求严格的字符串倒退输出),求最优解法
本人很懒,积分很少
..........................
要求是将一个字符串倒序输出例如字符串“i love you”,输出为“you love i”
字符长度不限,并且字符保存在char类型变量里面。
用标准C++的基础知识回答,不能使用vector、string等高级方法
........................
希望高人给予回答,谢谢。


------解决方案--------------------
本人小菜 虽然你说不能用vector 和string 

但是俺只会用他 呵呵

贴代码

C/C++ code

#include<iostream>
#include<string>
#include<sstream>
#include<list>

using namespace std;

int main()
{
    string s;
    getline(cin,s);
    istringstream str(s);
    string temp;
    list<string> svec;
    while(str>>temp)
        svec.push_front(temp);
    for(list<string>::iterator beg=svec.begin();beg!=svec.end();++beg)
        cout<<*beg<<" ";
    cout<<endl;
    return 0;
}

------解决方案--------------------
C/C++ code


#include<stdio.h>
void func(char*p)
{
    char *t = p;
    while( (*t!=0 )&&(*t !=' ') )
        t++;
    if( *t !=0 ){
        *t = 0;
        func( t+1 );
    }
    printf("%s ",p);
}
int main()
{
    char ch[]="i love you";
    func( ch );
    return 0;
}

------解决方案--------------------
char* pstr = "i love you";
char* pend = pstr+strlen(pstr);
char* pbeg = pend;
size_t cur = 0;
char* ptmp = new char[strlen(pstr)+1];
while(pbeg >= pstr)
{
if((*pbeg)!=' ' && (*pbeg)!='\t')
{
--pbeg;
continue;
}
memcpy(ptmp+cur, pbeg+1, pend-pbeg);
cur += pend-pbeg-1;
*(ptmp+cur) = *pbeg;
cur += 1;

pend = pbeg;
--pbeg;
}

if(pend > pbeg)
{
memcpy(ptmp+cur, pbeg+1, pend-pbeg);
}

cout << ptmp << endl;
delete [] ptmp;
ptmp = NULL;

老实说,我不喜欢自己写的这个,觉得有更好的。