0

これはこれまでの私のコードです'\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
4

1 に答える 1

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. nextindex番号 2 については、入力文字列 (上記の番号 1) の最後にいる場合は -1に設定する必要があることを除いて、説明は必要ないと思います。

于 2012-10-02T04:42:12.447 に答える