改正提問程序的最簡單方案是使用局部數組, 而不是指針, 讓編譯器考慮分配的問題:
#include <stdio.h> #include <string.h> char answer[100], *p; printf("Type something:\n"); fgets(answer, sizeof answer, stdin); if((p = strchr(answer, '\n')) != NULL) *p = '\0'; printf("You typed \"%s\"\n", answer);
本例中同時用 fgets() 代替 gets(), 以便 array 的結束符不被改寫。 參見問題 12.20。不幸的是, 本例中的 fgets() 不會像 gets() 那樣自動地去掉結尾的 \n。 也可以用 malloc() 分配 answer 緩衝區。
翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)