2013-02-19 71 views
0

SO,char **转为char *

我有一个char **;这实质上是一个带有指向该句子中每个单词的句子的句子;即

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

我期待提取在这种情况下使用,可以接受不同的单词量和字母统计的句子函数的最后一个字符*(耶!)。有任何想法吗?到目前为止,我已经找到了一些类似的功能,但没有一个能够做到这一点。

+3

'X [strlen的(X)-1]'? – 2013-02-19 01:51:30

+2

@MarcB将无法正常工作,它将需要长度为“hi”,其长度为2-1,这将返回“世界”,但依赖于第一个词 – 2013-02-19 01:53:39

+0

,那么你不能使用标准的C字符串功能,并将不得不推出自己的。到底你如何计划跟踪这个字符串有多长,假定标准C的字符串结束符分隔符现在实际上是字符串的一部分? – 2013-02-19 01:55:24

回答

3

当您将值分配到char **时,如何跟踪最后一个单词?你的问题的答案依赖于此。您可以使用终端值,例如。一个NULL值后的最后一个单词,然后像strlen那样搜索终端值,或者可以将该长度存储在size_t变量中。如果没有关于您迄今为止编写的代码的进一步信息,我无法确定哪些适用于您。

+0

多数民众赞成在我的想法;假设我在最后没有具体的价值,或者没有跟踪strlen,那么将无法做到这一点? 看起来像我将不得不修改我的代码并跟踪len – 2013-02-19 02:02:54

+0

+1,建议通过添加一个带NULL的最后一个条目来零终止char **。 – alk 2013-02-19 07:13:59

0

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

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

然后你就总能得到的最后一个字在O(1)时间:

struct sentence blah; 
// ... 
char* last_word = blah.words[blah.word_count - 1];