问题描述
- 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了
时间: 2024-11-03 22:04:59