2013-02-27 45 views
2

我想通過使用strtok和strncat來爲每個單詞添加字符串「ay」。但似乎有一個我找不到的衝突。它只給了我輸出的第一個單詞「Computeray」。幫幫我?strtok和strncat錯誤

#include <stdio.h> 
#include <string.h> 

int main(void) 
{ 
    char str[] = "Computer science is hard"; 
    char* Token; 
    char* work = "ay"; 
    Token = strtok(str, " "); 

    while (Token != NULL) 
    { 
     strncat(Token, work, 2); 
     printf("%s", Token); 
     Token = strtok(NULL, " "); 
    } 
    return 0; 
} 

回答

3

您正在修改的字符串(與strcat),並期待strtok仍然循規蹈矩 - 這是行不通的。除了使用strcat的,只打印"ay"分開:

while (Token != NULL) 
{ 
    printf("%say ", Token); 
    Token = strtok(NULL, " "); 
} 

即使它是工作,你願意的話,你會重寫一堆一路上你輸入的方式。可能不是你想要的 - 如果你需要建立一個全新的字符串,你應該把它寫入一個新的緩衝區,而不是覆蓋輸入。

+0

感謝您的回覆。但是,如何在不使用strncat/strcat的情況下在每個單詞的末尾打印「ay」呢? – 2013-02-27 21:48:34

+0

@ProgrammingNerd Carl提供了一個很好的例子,'printf(「%say」,Token)'。 – cnicutar 2013-02-27 21:49:53

+0

@cnicutar哦,nvm第一次沒有接受。謝謝你 – 2013-02-27 21:52:33