2014-06-10 41 views
0

我需要通過一個數組來搜索一個關鍵詞並在此之後獲取該詞。像這樣的東西,但在c Need to get a string after a "word" in a string in c#。我想過使用strtok,但它會從標記化破壞數組,我需要閱讀而不與數組混淆。有什麼辦法可以做到這一點?如何在一個數組中搜索一個接一個字c

array[50] = "Hi, I am victor"; 
// I want the word after the "am" without destroying or messing up the array 
+0

爲什麼不只是如果進行復印使用破壞性呼叫前陣?如果你知道這將完成工作? –

+0

我還沒有在C上試過這個,但是當我在arduino中做了一個副本時,備份數組仍然沒有被我碰過。也許我做了錯誤的事情,但那次經歷讓我有點不想那麼做。 – user3577156

回答

4

使用strstr()。

char* am = strstr(array , "am ") ; 
char* next_word = NULL ; 
if(am) 
    next_word = am + strlen("am ") ; 

最後一行將指針移到「am」之後的單詞位置。

這假定所有的單詞都是由一個空格分開的,沒有別的。您可能需要檢查其他字符和多個空格。我希望你明白這個主意。

+0

這很完美,謝謝 – user3577156

0

你可以使用strtok的,你只需要到字符串複製到一個臨時串遞給它strtok函數之前:

char array[50] = "Hi, I am victor"; 
char tmp[50]; 
char tokensep[] = " \n\r"; 
char *tok_ptr; 

snprintf(tmp,50,"%s",array); 

token = strtok_r(tmp, tokensep, &tok_ptr); 
while(token != NULL & strcmp(token,"am") != 0) 
{ 
    token = strtok_r(NULL, tokensep, &tok_ptr); 
} 
token = strtok_r(NULL, tokensep, &tok_ptr); 
// token now contains the name 
相關問題