我有这样的代码在我的程序:分段故障用于fgets() - 用C
char* tok = NULL;
char move[100];
if (fgets(move, 100, stdin) != NULL)
{
/* then split into tokens using strtok */
tok = strtok(move, " ");
while (tok != NULL)
{
printf("Element: %s\n", tok);
tok = strtok(NULL, " ");
}
}
我已经尝试过,并与fgets后加入printf语句,和前一个被打印出来,但一前一后才不是。 我不明白为什么这与fgets调用导致分割失败。
如果有人有任何想法,我将非常感激。
感谢 科瑞
难道你还可以使用适当的调试器旁边线前后分别增加打印?它是在系统库中的某处显示调用堆栈,还是仅在程序功能中的最后一个位置?什么平台/编译器? – Yirkha
您可能在程序的其他地方有一个错误。它破坏了堆,并且'fgets()'中的错误只是一个副作用。 – Barmar
嘿,我还是很新的C,所以我不知道该怎么做(我是一个Java程序员)。我在Ubuntu上使用GNU编译器,并使用C99。 – Fishingfon