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

标签 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. 我如何自己调试此类问题

非常感谢。

最佳答案

根据对我的问题的评论,这似乎是一个终端限制。将文件通过管道传输到程序中会按预期工作。

关于C 程序停止接受 1023 个字符的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17497424/

相关文章:

node.js - 在 WebStorm 中使用任意 NodeJS 单元测试框架进行调试

php gettext调试

c - 为什么ssh登录时会调用两次pam_sm_authenticate?

c - 在 main 方法产生错误后声明一个方法

将多条抗锯齿线连接在一起

javascript - Safari 7 中忽略的断点

windows - 使用 windbg 检查传递给函数的参数

debugging - netlogo 中的 while 循环调试

c - 如何用C语言将文件中的数据存储到数组中

c - 将变量发送到函数并在 C 中修改此变量