c++程序求教,strtok记号化句子,逆序输出,求大神

#include
using namespace std;
#include
using namespace std;
char *t[50];
void print(char*tptr,char*tptrr,int i)
{
if(tptrr!=NULL) {t[i]=tptr;tptr=strtok(NULL," ");tptrr=strtok(NULL," ");print(tptr,tptrr,i+1);cout<<t[i]<<" ";}
else cout<<tptr<<" ";
}
int main()
{
char a[50];char b[50];
char *tptr;char*tptrr;
cout<<"输入短句子:"<<endl;
cin.getline(a,50);
for(int j=0;j<50;j++)b[j]=a[j];
tptr=strtok(a," ");tptrr=strtok(b," ");tptrr=strtok(NULL," ");
print(tptr,tptrr,0);
return 0;
}
仅有输入奇数个词语时不会崩溃,而且奇数个的时候也只显示第奇数个词语,跪求大神

在函数peint里。每次递归做了两次strtok,所以当然就只有奇数的单词被保存到t了。

#include <iostream>
using namespace std;
char *t[50];
void print(char*tptr, char*tptrr, int i)
{
    if (tptrr != NULL) 
    {
        t[i] = tptr; 
        tptr = tptrr; //此处修改了
        tptrr = strtok(NULL, " "); 
        print(tptr, tptrr, i + 1); 
        cout << t[i] << " "; 
    }
    else
        cout << tptr << " ";
}
int main()
{
    char a[50]; char b[50];
    char *tptr; char*tptrr;
    cout << "输入短句子:" << endl;
    cin.getline(a, 50);
    for (int j = 0; j < 50; j++)
        b[j] = a[j];
    tptr = strtok(a, " ");
    tptrr = strtok(b, " ");
    tptrr = strtok(NULL, " ");
    print(tptr, tptrr, 0);
    return 0;
}

另外。这个程序里还隐藏着一点小问题的。当输入的字符串为空的时候,就Runtime Error了