は、私は、静的バッファ内のトークン化文字列を格納することができるstrok
strtokがトークン化に失敗しましたか?以下では
#include <string.h>
void func(char *c)
{
char *pch = strtok (c,"#");
while (pch != NULL)
{
pch = strtok (NULL, "#");
}
}
int main()
{
char c[] = "a#a\nb#b\n";
char *pch = strtok (c,"\n");
while (pch != NULL)
{
char *p = new char[strlen(pch)+1];
strcpy(p, pch);
func(p); //copy of pch
pch = strtok (NULL, "\n"); //fails to get pointer to 'b#b'
}
}
サイドと(関連性のない)ノートでは、なぜCとC++のコードを混ぜるのか分かりません。 STLストリングを使用してライブラリを強化すると、あなたの人生を少し楽にすることができました。 –
'strtok_r()'実装へのリンクを提供したいですか? – cpx
@ Dave18:実際にはPOSIX.1-2001の一部なので、* NIX用のコードを書いているなら、既にそこにあります。そのマニュアルページを見てください。 Windows用にプログラミングしているなら、 'strtok_s()'がそこにあります:http://msdn.microsoft.com/en-us/library/ftsafwz3.aspx –