我想了解为什么这段代码给我一个分段错误!
research
是一个字符串,它打印我的令牌,但之后我有一个分段错误。
你能帮我吗?分割错误strtok
char buf[MAX_CHARS_PER_LINE];
strcpy(buf, research.c_str());
int n = 0;
const char * token[MAX_TOKENS_PER_LINE] = {};
for (n = 0; n < MAX_TOKENS_PER_LINE; n++)
{
if (n == 0) token[0] = strtok(buf, DELIMITERS);
else token[n] = strtok(0, DELIMITERS);
if (!token[++n]) break;
printf("%s\n", token[n]);
}
如果没有'MAX_TOKENS_PER_LINE'标记怎么办? –
除了上面的蓝月亮的评论,你似乎也会加1到n两次 - 一次在for循环中,一次在break行。我不知道这是否有意或无意? – FreudianSlip
很难相信这甚至应该打印第一个令牌...... – laune