C程序停止接受1023个字符的输入

时间:2013-07-05 22:05:21

标签: c debugging

我正在使用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;
}

请人们解释一下:

  1. 为什么会这样?
  2. 我自己如何调试此类问题
  3. 非常感谢。

1 个答案:

答案 0 :(得分:2)

根据我的问题的评论,它似乎是一个终端限制。将文件管道插入程序可以正常工作。