我正在使用 K&R 自学 C。练习 1-16 要求我重构一些提供的代码以给出“任意长的输入行”的长度。
在解决这个问题时,我发现我的终端在 1023 个字符后停止接受输入;一个非常可疑的数字我相信你会同意的!!我已经在 Mac OS X 和 OpenBSD 上进行了测试,并看到了相同的行为。该程序没有停止响应,因为键入退格键并提交输入正常工作。
我无法弄清楚如何使用 gdb 进行调试,因为问题发生在数据输入期间,而不是在使用 gdb 单步执行时提交之后。
我在 getchar 或 bash 联机帮助页中看不到对限制的引用,而且确实似乎输入很少。
我将问题减少到以下问题并看到相同的行为。
#include <stdio.h>
main()
{
int c,i=0;
while ((c=getchar()) != EOF && c!='\n')
++i;
printf("%d\n",i);
return 0;
}
人们可以解释一下:
- 为什么会这样
- 我如何自己调试此类问题
非常感谢。