【发布时间】:2009-05-12 06:08:56
【问题描述】:
这看起来像是家庭作业,但请放心,这不是家庭作业。只是我们在 c++ 课程中使用的书中的一个练习,我正在尝试提前阅读指针..
书中的练习告诉我将一个句子拆分为标记,然后将它们中的每一个转换为猪拉丁然后显示它们..
这里的pig latin基本上是这样的:ball在piglatin中变成allboy..boy变成oybay..取出第一个字母,放在最后,然后加上“ay”..
到目前为止,这是我所拥有的:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <cstring>
using std::strtok;
using std::strcat;
using std::strcpy;
void printPigLatin( char * );
int main()
{
char sentence[500];
char *token;
cout << "Enter string to tokenize and convert: ";
cin.getline( sentence, 500 );
token = strtok( sentence, " " );
cout << "\nPig latin for each token will be: " << endl;
while( token != NULL )
{
printPigLatin( token );
token = strtok( NULL, " " );
}
return 0;
}
void printPigLatin( char *word )
{
char temp[50];
for( int i = 0; *word != '\0'; i++ )
{
temp[i] = word[i + 1];
}
strcat( temp, "ay" );
cout << temp << endl;
}
我很清楚地理解了标记化部分,但我不确定如何做猪拉丁语.. 我试着从简单地在标记中添加“ay”开始,看看结果会是什么.. 不知道为什么程序进入无限循环并继续显示“ayay”..有什么提示吗?
编辑:这个现在工作正常,但我不确定如何在添加“ay”之前添加令牌的第一个字母
编辑:这就是我“看到”它完成的方式,但不确定如何正确实现它..
【问题讨论】: