我的代码如下。我正在使用一个struct并接收一个输入文本文件。我把它分成几行,然后试着把每一行分成各自的单词。使用strtok,它目前只打印每行的第一个单词。我该怎么解决?

typedef struct {
    char linewords[101];
    char separateword[101];
} line;

主要有以下几点:
line linenum[101];
char var[101]
char *strtok(char *str, const char delim);

while fgets(linenum[i].linewords, 101, stdin) != NULL) {

    char* strcopy();
    char* strtok();
    strcpy(linenum[i].separateword,linenum[i].linewords);

    strtok(linenum[i].separateword, " "); /*line i'm referring to*/
    i++;
    }
}

我为任何困惑预先道歉。我想要的是让linenum[I].separateword[0]返回第一个单词,等等。这可能吗?或者还有别的方法把我的输入分解成单词吗?
谢谢你

最佳答案

#include <stdio.h>
#include <string.h>

typedef struct {
    char linewords[101];
    char *separateword[51];
} line;

int main(void){
    line linenum[101];
    int i = 0;

    while(fgets(linenum[i].linewords, sizeof(linenum[i].linewords), stdin) != NULL) {
        char *token, *delm = " \t\n";
        int j = 0;
        for(token = strtok(linenum[i].linewords, delm);
            token;
            token = strtok(NULL, delm)){
            linenum[i].separateword[j++] = token;
        }
        linenum[i++].separateword[j] = NULL;
    }
    {//test print
        char **p = linenum[0].separateword;
        while(*p)
            puts(*p++);
    }
    return 0;
}

09-09 22:38