【发布时间】:2014-06-16 06:57:45
【问题描述】:
我试图理解为什么这段代码给我一个分段错误!research 是一个字符串,它正在打印我的令牌,但之后我遇到了分段错误。
你能帮我吗?
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令牌怎么办? -
除了上面 Blue Moon 的评论之外,您似乎还将 1 添加到 n 两次 - 一次在 for 循环中,一次在断线中。我不知道这是不是有意的?
-
很难相信这甚至应该打印第一个令牌......
标签: c segmentation-fault strtok