2016-05-14 70 views
3

如何將TCHAR拆分爲其他變量? 實施例:C - 拆分TCHAR

TCHAR comando[50], arg1[50], arg2[50]; 
Mensagem msg; 
_tcscpy(msg.texto, TEXT("MOVE 10 12")); 

所以,msg.texto具有字符串 「MOVE 10 12」 和我希望變量COMANDO [50]爲 「MOVE」,變量ARG1爲 「10」 和可變ARG2爲「12」。我怎樣才能做到這一點? 對不起,可能會出現一些英文錯誤。 在此先感謝!

解決:

TCHAR *pch; 
    pch = _wcstok(msg.texto, " "); 
     _tcscpy(comando, pch); 
     pch = _wcstok(NULL, " "); 
     _tcscpy(arg1, pch); 
     pch = _wcstok(NULL, " "); 
     _tcscpy(arg2, pch); 
+0

什麼是您的系統中的TCHAR?一個'char'例如? – gsamaras

+0

https://msdn.microsoft.com/en-us/library/office/cc842072.aspx – user3088049

回答

1

對於TCHAR,你可以在這個例子中使用strtok,如:

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

typedef char TCHAR; 

int main() 
{ 
    TCHAR str[] ="MOVE 10 12"; 
    TCHAR * pch; 
    printf ("Splitting string \"%s\" into tokens:\n",str); 
    pch = strtok (str," "); 
    while (pch != NULL) 
    { 
    printf ("%s\n",pch); 
    pch = strtok (NULL, " "); 
    } 
    return 0; 
} 

如果它是一個wchar_t,那麼你可以使用wcstok()

wchar_t * wcstok(wchar_t * strToken,const wchar_t * strDelimit );

+0

我記得,'TCHAR'可以是'char'或'wchar_t'--更常見的是後者。 'strtok'不適用於'wchar_t'數組。 (我不記得是否有相應的函數可以在寬字符串上運行。) –

+0

@KeithThompson感謝您爲downvote辯護。許多人不會!請參閱問題下的評論,我向OP詢問了這個問題。他回答了這個[鏈接](https://msdn.microsoft.com/en-us/library/office/cc842072.aspx)。但是,如果您想提出如何改進我的答案,請讓我知道! – gsamaras

+0

@gsmaras感謝您的幫助,但這不起作用。 – user3088049