问题标签 [kernighan-and-ritchie]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
365 浏览

c - 被 K&R 练习 1.5.2 难倒

我目前正在尝试通过使用 K&R 来学习 C,但我完全被示例 1.5.2 难住了。出于某种原因,在我按下 Ctrl-Z 后nc,它打印的不是打印,而是nc乘以 2。我不知道是什么导致了这个问题(我完全复制了书中的代码)。我使用的编译器是 Visual Studio 2010。代码如下:

0 投票
1 回答
415 浏览

c - 我对 K&R 练习 1-22 的解决方案有什么问题?

The C Programming Language的练习1-22如下:

编写一个程序,在输入的第n列之前出现的最后一个非空白字符之后将长输入行“折叠”成两行或多行较短的行。确保你的程序用很长的行做一些智能的事情,如果在指定的列之前没有空格或制表符。

这是代码:

这是我正在使用的示例输入:

这是我得到的输出:

这里有什么错误?我真的一点头绪都没有。

0 投票
3 回答
8343 浏览

c - 如何使用直接计算确定浮点类型的范围?

我正在尝试解决“The C Programming Language”第 2 版中的练习 2-1,它要求:

“编写一个程序来确定 char、short、int 和 long 变量的范围,包括有符号和无符号,方法是从标准头打印适当的值并通过直接计算。如果你计算它们更难:确定各种浮动的范围-点类型。”

通过使用标准标头中的最小值和最大值以及直接计算,我设法确定了除浮点之外的所有类型的范围。

如何使用直接计算确定浮点类型的范围?

0 投票
2 回答
879 浏览

c - “C 编程语言”的非常基本的示例代码不能像预期的那样工作?

我是一名中等经验的 Java 开发人员,在学习计算机科学的 C 语言时遇到了很多问题。我尝试使用许多人似乎推荐的“The C Programming Language”一书。

但是我遇到了最简单的问题,比如 EOF 与 getchar() 的结合。这是代码:

我正在使用 Mac OS X Lion 并使用带有“./a.out”的“cc”命令在终端中运行,就像书中描述的那样运行文件。我得到的是:

  • 总是计算一个字符太多
  • while 循环永远不会结束!它只是在到达输入结束后等待另一个输入...

我真的不知道可能是什么问题。有人可以帮忙吗?

0 投票
1 回答
105 浏览

function - 为什么 GCC 源代码中特定于目标的函数声明使用 K&R 样式而不是原型?

我一直在研究 GCC 源代码,我注意到大多数(如果不是全部)特定于目标的源代码文件(例如 arm.c)使用旧的 K&R 函数样式。

这有什么特别的原因吗?向后兼容?可移植性?

0 投票
5 回答
1882 浏览

c - 请解释这个示例 C 代码

此代码来自 K&R。我已经读了好几遍了,但它似乎仍然逃脱了我的掌握。

正如 K&R 所说,这两个函数的目的是防止程序读取过多的输入。即,如果没有此代码,函数可能无法确定它已读取足够的数据,而无需先读取太多数据。但我不明白它是如何工作的。

例如,考虑 getch()。据我所知,这是它所采取的步骤:

  1. 检查 bufp 是否大于 0。
  2. 如果是,则返回 buf[--bufp] 的 char 值。
  3. 否则返回 getchar()。

我想问一个更具体的问题,但我真的不知道这段代码是如何实现它打算实现的,所以我的问题是:(a)目的和(b)这段代码的推理是什么?

提前致谢。

注意:对于任何 K&R 粉丝,可以在第 79 页找到此代码(我想取决于您的版本)

0 投票
3 回答
443 浏览

c - “The C Programming Language 2nd Edition”中的这段代码是否包含错误?

此代码来自 C 编程语言第二版 7.3 Variable-length Argument Lists

通常这个程序应该输出 aaaaaaa 并停止,但它会打印 aaaaaaa dddd。 http://ideone.com/d3Akk

真的是bug吗。

谢谢你。

0 投票
7 回答
19876 浏览

c - 为什么在编译 K&R2 第 1 章中最长的行示例时出现“getline 的类型冲突”错误?

这是我试图直接从“C 编程语言”第 1.9 节运行的程序。

这是我尝试使用 Ubuntu 11.10 编译程序时遇到的错误:

只是为了确保书中的印刷没有问题,我引用了本书后面章节练习的这组答案 (http://users.powernet.co.uk/eton/kandr2/krx1。 html),当我尝试从该链接运行练习 18、19、20、21 等时,我得到了类似的错误。当我无法运行程序来查看它们的输出时,真的很难学习。当在一个程序中引入字符数组和函数调用时,这个问题就开始了。我将不胜感激有关此问题的任何建议。

0 投票
3 回答
267 浏览

c - 返回指向结构的指针

我遇到了一个返回 Kernighan & Ritchie 的“C 编程语言”结构的示例。

似乎该函数正在返回一个指向函数中本地变量的指针;这不是返回悬空指针的情况吗?

0 投票
6 回答
739 浏览

c - 为什么在源文件顶部附近声明函数?

我正在通过 K&R 学习编程。到目前为止进展顺利,但我不清楚第 1.8 节(函数)中的一行代码的作用。

在 1.8 节中,作者向您展示了如何创建一个函数来将一个整数乘以另一个整数的幂。

我已经粘贴了下面的代码,因为它是在书中写的。一切都很好。但我不知道他们为什么将这一行放在顶部:

书中没有提到它,只是说程序会将整数 m 提高到 n 次方。如果我从代码中删除该行,程序仍会按应有的方式输出。

如果我理解正确的话,这条线

创建函数,下面的大括号定义函数。然后main下的大括号调用函数输出图表。

所以这一切似乎都说得通。但我看不到最上面的一行是做什么的。

这可能是无关紧要的,但我似乎更有可能遗漏了一些东西。谁能告诉我为什么那条线在那里?