0

所以,

我有一个字符**;这本质上是一个带有指向该句子中每个单词的指针的句子;IE

'h''i''\0''w''o''r''l''d''\0''y''a''y''!''\0'

在这种情况下,我希望使用一个可以接受不同字数和字母数的句子的函数来提取最后一个 char*(耶!)。有任何想法吗?到目前为止,我发现了一些库函数可以做类似的事情,但没有一个可以完全做到这一点。

4

2 回答 2

3

当您将值分配给 时char **,您如何跟踪最后一个单词?您的问题的答案取决于此。您可以使用终端值,例如。最后一个单词之后的一个NULL值,然后像这样搜索最终值strlen,或者将长度存储在一个size_t变量中,或者struct使用一个灵活的数组成员(即struct fubar { size_t size; char *word[]; },随着数组的增长,使用一些push_back函数来重新分配整个对象,并递增size) . 如果没有有关您迄今为止编写的代码的更多信息,我无法确定其中哪一个适用于您。

于 2013-02-19T01:56:31.990 回答
0

为此使用适当的数据结构。例如:

struct sentence {
    size_t word_count;
    char** words;
};

然后,您将始终能够在 O(1) 时间内找到最后一个单词:

struct sentence blah;
// ...
char* last_word = blah.words[blah.word_count - 1];
于 2013-02-19T02:02:13.983 回答