到目前为止,这是我的代码,我还需要弄清楚如何将'\0'
添加到字符串的末尾,并将nextindex提升到下一个单词的开头。
* inputs: str - the string,
* if str is NULL, return the index of the next word in the string
* AND place a '\0' at the end of that word.
*/
int nextword(char *str)
{
// create two static variables - these stay around across calls
static char *s;
static int nextindex;
int thisindex;
// reset the static variables
if (str != NULL)
{
s = str;
thisindex = 0;
// TODO: advance this index past any leading spaces
while (s[thisindex]=='\n' || s[thisindex]=='\t' || s[thisindex]==' ' )
thisindex++;
}
else
{
// set the return value to be the nextindex
thisindex = nextindex;
}
// if we aren't done with the string...
if (thisindex != -1)
{
// TODO: two things
// 1: place a '\0' after the current word
// 2: advance nextindex to the beginning
// of the next word
}
return thisindex;
}
我想要以下代码
char *str = "Welcome everybody! Today is a beautiful day\t\n";
int i = nextword(str);
while(i != -1)
{
printf("%s\n",&(str[i]));
i = nextword(NULL);
}
输出
Welcome
everybody!
Today
is
a
beautiful
day
答案 0 :(得分:0)
当您的代码中包含所需的操作时,我真的不明白为什么要求帮助:
// TODO: two things
// 1: place a '\0' after the current word
// 2: advance nextindex to the beginning
// of the next word
所以让我们把它分解。
您需要搜索字符串,直到找到空格。你已经有了一个反向循环。您可以使用'\0'
替换单词后面的字符。小心不要超过字符串的末尾。
我认为数字2不需要解释,只是说你需要确保如果你发现自己在输入字符串的末尾(在上面的数字1中),你设置{{1}到-1。