0

我正在使用 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. 我如何自己调试此类问题

非常感谢。

4

1 回答 1

2

根据对我的问题的评论,这似乎是一个终端限制。将文件导入程序按预期工作。

于 2013-07-05T22:32:26.900 回答