我正在使用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;
}
请人们解释一下:
非常感谢。
答案 0 :(得分:2)
根据我的问题的评论,它似乎是一个终端限制。将文件管道插入程序可以正常工作。