如何使用fgets中的一行创建单词数组?

时间:2014-09-21 23:47:56

标签: c arrays fgets

我的输入来自一个包含多行文字的文件。在使用fgets()获取一行之后,如何创建一个包含该行中的单词的数组,然后我可以迭代它?即。从“粉红色弗洛伊德”到{“粉红色”,“弗洛伊德”}。

int main() {
    char line[500];
    while(fgets(line, sizeof(line), stdin) != NULL) {
        ...
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

您可以使用strtok()功能从一行文字中提取单词。 请参阅How does the strtok function in C work?http://www.cplusplus.com/reference/cstring/strtok/

strtok()函数将修改line[]的内容,但是 我认为这种用法没问题,因为你刚刚在那里写了一行输入 你很快就会在其上写下另一行输入。

您必须分配一个单独的数组来保存指向单个单词的指针。 如果您打算在阅读下一行输入后继续使用此数组,那么您将会这样做 需要制作strtok()返回的字符串的新副本,因为它返回的是什么 指向char line[500]的指针,下一行输入将覆盖它们。