2013-02-19 96 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];