改正提问程序的最简单方案是使用局部数组, 而不是指针, 让编译器考虑分配的问题:
#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)