问题标签 [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 回答
1418 浏览

c - K&R 的教学可读性差吗?

自从我看 C(仍在学习)以来已经有一段时间了,我刚刚回到了 K&R 书。

我刚刚参加了练习 5-3 (p107)。

编写我们在第 2 章中展示的函数 strcat 的指针版本:strcat(s,t) 将字符串 t 复制到 s 的末尾。

我想出了这个...

它似乎工作。

我想知道的是,K&R 书经常用尽可能少的行编写练习——我希望如果他们为上面提供了自己的代码示例,你会得到这样的东西......

对我来说,这不太可读(也许这个例子不是那么好,但我经常看他们的代码并认为如果将其分成几行,我会更好地理解它)。书中提供的示例似乎提倡在循环的条件部分进行这种赋值,实际上每行都塞满了尽可能多的代码。

即使可读性受到影响,这本书是否尽可能地尽力而为?

这只是C 方式吗?

0 投票
5 回答
324 浏览

c - 在 C 中,有一种方法可以知道何时到达字符串的末尾。向后迭代时有没有办法知道开始?

我正在做 K&R练习 5-4 (p107)。

编写函数 strend(s,t) ,如果字符串 t 出现在字符串 s 的末尾,则返回 1,否则返回 0。

我认为最好的方法是...

  • 将两个指针都递增到末尾
  • 当每个字符匹配时,通过两个字符串倒数
  • 如果我们已经完成计数到第二个字符串的开头,则返回 1

所以这就是我所拥有的......

如您所见,我使用计数器来判断我何时到达第二个字符串的开头。

是否有任何其他循环可以在没有计数器的情况下使用来判断我们何时到达字符串的开头(类似于寻找\0字符串的结尾)?

谢谢。

更新

没想到要使用指针-我仍在学习并忘记了一些事情!

我想出了这个...

0 投票
3 回答
922 浏览

c - 简单的 C 程序

该程序基于K&R中输入/输出部分的程序

它编译正常。但是在尝试运行时,任何输入的输出都是“-NAN”,可能不是数字。我不知道为什么。任何意见,将不胜感激。

0 投票
3 回答
488 浏览

c - Printf 问题与 Kernighan 和 Ritchie 问题 1-17

在下面的代码中(Kernighan 和 Ritchie 的“C 编程语言”中的问题 1-17)为什么它不打印最长的行(在底部)?

0 投票
3 回答
2588 浏览

c - 单词长度的直方图练习提示?

我正在用“The C Programming Language”一书学习 C,我正在尝试解决练习 1.13:

“编写一个程序来打印输入中单词长度的直方图。用水平条绘制直方图很容易;垂直方向更具挑战性。”

我编写了代码,但是当我按 CTRL+Z(文件结尾)时,它显示全零而不是单词的长度。

谁能给我一个提示我哪里出错了?

0 投票
2 回答
271 浏览

c - K&R - 数字类型的字母字符?

以数字方式对与字典顺序相反的字母字符进行排序是什么意思,例如在带有选项-n的 K&R 5-14 中

0 投票
2 回答
656 浏览

c - K&R 任务练习 5.17

有人能解释一下练习 5.17 中具体需要做什么吗,在行内排序是什么意思,它的字段?

0 投票
2 回答
2152 浏览

c - 在 K&R 中找到的 C 问题中的二叉树实现

所以我一直在阅读 K&R C 的书并且有一个问题.. 在第 6 章第 140-141 页的结构中,有看起来像这样的代码(我去掉了一些更不相关的部分)

我的困惑在于 root = addNode(root, word) 的 main() 函数

如果 addNode 返回一个指向新添加节点的指针(或者如果它已经在树中,则返回到该单词所在的节点),那不会“丢失”树上的所有数据吗?根不应该作为树的根吗?

谢谢!

0 投票
4 回答
223 浏览

c - 更好地理解 printf - 当提供的值为负时,它用“%c”打印什么?

在 Kernighan & Ritchie 中,它说“当 char 数据类型被签名或无符号取决于机器时,所有可打印字符都是正数。”

有人可以向我解释这条线的含义吗?我的系统已经签署了字符,但即使是负值,比如 -90,printf 也会打印一个字符(即使它不是一个非常熟悉的字符)。

0 投票
2 回答
4208 浏览

c - K&R 练习 1-20 - 需要一些说明

我不完全理解以下练习的要求:

“编写一个程序 detab,用适当数量的空格替换输入中的制表符,以便与下一个制表位间隔。假设一组固定的制表位,例如每 n 列。n 应该是变量还是符号参数?”

有人可以澄清粗体部分吗?