コードで同じ関数を呼び出していない場合はすべて正常に機能しますが、関数が再帰から突然戻った場合、変数pch
はNULLになります。
void someFunction()
{
char * pch;
char tempDependencies[100*64+100];
strcpy(tempDependencies,map[j].filesNeeded);
pch = strtok(tempDependencies,",");
while (pch != NULL)
{
someFunction(); <- if i comment this out it works fine
pch = strtok (NULL, ",");
}
}
したがって、たとえば、ループが文字列file2,file3,file4
に作用する場合、ループは正しく分割され、文字file2
列をに変更しますfile2\\000file3,file4
が、次の呼び出しはにpch = strtok (NULL, ",");
レンダリングpch
されます0x0
。再帰を呼び出すときに気づかないことがありますか?