我有這樣的代碼在我的程序:分段故障用於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