读取字符串中每个单词并使用C在不同行上打印每个单词的函数

时间:2012-10-02 04:04:33

标签: c

到目前为止,这是我的代码,我还需要弄清楚如何将'\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

1 个答案:

答案 0 :(得分:0)

当您的代码中包含所需的操作时,我真的不明白为什么要求帮助:

    // TODO: two things
    // 1: place a '\0' after the current word
    // 2: advance nextindex to the beginning
    // of the next word

所以让我们把它分解。

  1. 您需要搜索字符串,直到找到空格。你已经有了一个反向循环。您可以使用'\0'替换单词后面的字符。小心不要超过字符串的末尾。

  2. 我认为数字2不需要解释,只是说你需要确保如果你发现自己在输入字符串的末尾(在上面的数字1中),你设置{{1}到-1。