1
9
如果你坚持第一章,我觉得这很好。以下是我从代码审查的角度提出的建议: 在C中检查相等时,始终将常量放在第一位
在C#中,您无法摆脱这种情况,但它在C中编译得很好,而且可能是一个真正的调试难题。 |
2
5
没有理由有两个缓冲区,您可以在适当的位置修剪输入行
编辑:假设使用ASCII编码,可以使while循环更加简单。
|
3
1
修剪()太大了。
然后需要一个名为int scanback(const char*s,const char*matches,int start)的函数,该函数从开始处开始,一直到z,只要在匹配项中包含的s id处扫描的字符返回找到匹配项的最后一个索引。 然后需要一个名为int scanfront(const char*s,const char*matches)的函数,该函数从0开始,只要在s处扫描的字符包含在匹配项中,就会向前扫描,返回找到匹配项的最后一个索引。 然后需要一个名为int charnstring(char c,const char*s)的函数,如果s中包含c,则返回非零,否则返回0。 你应该能够用这些来写trim。 |
4
1
个人对于while构造: 我比较喜欢以下几点:
他们两人都核对过了!=0,但第一个看起来更干净一些。如果char不是0,那么循环体将执行,否则它将跳出循环。 对于“for”语句,虽然在语法上是有效的,但我发现:
对我来说,这看起来很“奇怪”,实际上是潜在bug的噩梦解决方案。如果我回顾这段代码,它会像一个发光的红色警告一样。通常,您希望使用for循环进行已知次数的迭代,否则会对while循环进行排序。(和往常一样,这条规则也有例外,但我发现这通常是正确的)。上述声明可能成为:
|
5
0
首先:
(还添加了注释并修复了一个bug。) 一个大问题是MAXLINE常量的使用——main()专门将其用于 和 出来 |
6
0
我个人会这样写代码:
转换为单独的函数(甚至定义宏) |
7
0
-转到行的末尾(终止于0; -当不在行首且当前字符为空格时,将其替换为0。
|
8
0
做同样事情的另一个例子。使用C99特定的东西做了一些轻微的违规行为。这在K&R.还使用了assert()函数,该函数是标准库的一部分,但在K&R
|
9
0
以下是我在不知道第1章或K&中内容的情况下尝试的练习;我想是指针?
|
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |