2012-07-20 28 views
0

我試圖從給定字符的出現中斷開一個字符串。我正在使用strpbrk函數。但是,我得到這個錯誤strpbrk函數 - C

21 G:\My Programs\C\horse.cpp invalid conversion from `char' to `const char*' 

,我採用的是如下

char horses[100], h[1]; 

char *brokenstring; 

h[0] = 'H'; 

brokenstring = strpbrk (horses,h[0]); 

我得到在我使用strpbrk函數行此錯誤的代碼。請幫助我。

+0

1)這裏的大小爲1的char數組有什麼意義? 2)你在尋找'strchr()'嗎? – FatalError 2012-07-20 16:03:06

+0

我認爲這段代碼必須是不完整的,你永遠不會初始化馬匹。 – Justin 2012-07-20 16:04:20

+0

char * strpbrk(const char *,const char *) – BLUEPIXY 2012-07-20 16:05:18

回答

0

strpbrk的第二個參數必須是一個字符串,而不是char。

目前尚不清楚你想做什麼;你確定你不需要,例如,strtok()?

如果您有幾個可能的分隔字符(例如H,Y和K--然後您傳遞「HYK」),則strpbrk()很有用。否則,你會更好地通過strchr()。

0

你傳遞了​​strpbrk的第二個參數一個字符,而不是指向字符的指針。

你需要調用strpbrk(馬,H)

+0

但是'h',因爲它目前站立,不是null結尾。 – hmjd 2012-07-20 16:11:47

2

你需要傳遞一個const char *到strpbrk()的第二個參數,你也需要中斷與空字符串。在http://www.cplusplus.com/reference/clibrary/cstring/strpbrk/

int main(int argc, char ** argv) {  

char horses[100], h[2]; 
char *brokenstring; 

h[0] = 'H'; 
h[1]=0; 
brokenstring = strpbrk (horses,h); 
return 0; 
} 
+0

自動進行從不合格類型到合格類型的轉換。 gcc會生成警告,但沒有必要對其進行限定。 – alinsoar 2012-07-20 16:14:42

0

找我看到這個函數看起來像這樣

char * strpbrk (const char *, const char *); 

但你傳遞的馬和h[0]h[0]不是char *,它實際上是char。如果你只是通過它h你會沒事的。

編輯:正如其他人所說,你實際上需要確保你null結束h。