-
有些ANSI 前的编译器/预处理器把下面这样的宏
#define TRACE(var, fmt) printf("TRACE: var = fmt\n", var)
解释为
...
-
有两个程序protoize 和unprotoize 可以在有原型和无原型的函数定义和声明之间相互转换。AN>
这些程序不能完全完成“经典” C 和...
-
某些构造随编译器和硬件的实现而变化, 这一直是C语言的一个特点。AN>
这种有意的不严格规定可以让编译器生成效率更高的代码, 而不必让所有程序为了不合理的情况承担额外的负...
-
第一, 保存getchar的返回值的变量必须是int型。AN>
getchar() 可能返回任何字符值, 包括EOF。AN>
如果把getchar 的返回值截为...
-
问题:
我发现如果坚持检查返回值以确保用户输入的是我期待的数值, 则 scANf() 的使用会安全很多, 但有的时候好像会陷入无限循环。在scANf() 转换数字的时候, 它遇到...
-
scANf() 有很多问题—— 参见问题12.15, 12.16 和12.17。
而且, 它的%s 格式有着和gets() 一样的问题(参见问题12.20...
-
ANSI/ISO 标准C 函数mktime() 和difftime() 对这两个问题提供了一些有限的支持。
mktime() 接受没有规格化的日期, 所以可以用一个日期的stru...
-
标准C 库函数就有一个: rANd()。
你系统上的实现可能并不完美, 但写一个更好的并不是一件容易的事。如果你需要实现自己的随机数生成器, 有许多这方面的文章可供参考; 象下面...
-
直接的方法是AN>rANd() % N /* 不好*/AN>试图返回从0 到N ¡ 1 的数字。AN>
但这个方法不好, 因为许多随机数发生器...
-
你可以调用srANd() 来初始化模拟随机数发生器的种子, 用的值可以是真正随机数或至少是个变量, 例如当前时间。
这儿有个例子:#include <stdlib.h>...
-
如果问题并不是那么简单, 那么回想一下, 电脑一般都是用一种浮点的格式来近似的模拟实数的运算, 注意是近似, 不是完全。AN>
下溢、误差的累积和其它非常规性是常遇到的麻...
-
为了把printf() 的正确原型说明引入作用域。AN>对于用可变参数的函数, 编译器可能用不同的调用次序。AN>
例如, 如果可变参数的调用比固定参数的调用效率...
-
这一段信息不可移植。AN>
一些旧系统提供一个非标准函数nargs()。AN>
然而它的可信度值得怀疑, 因为它的典型返回值是参数的字节长度, 而不是参数的个数...
-
“程序在执行前崩溃,用调试器单步跟进,在main()之前死了”AN>
也许你定义了一个或多个非常大的局部数组(超过上千字节)。AN>
许...
-
许多地方有可能出错。AN>
下面是一些通常的检查要点:AN>1、未初始化的局部变量, 参见问题7.1。AN>2、整数上溢, 特别是在一些16 比特的机器上...
-
问题:
“Segmentation violation”, “Bus error” 和“General protect...
-
K&R 提供了最常被抄袭的实例, 同时他并不要求大家沿用他的风格:大括号的位置并不重要, 尽管人们对此有着执着的热情。
我们在几种流行的风格中选了一种。
选一个适合你的...
-
这些功能跟你所用的终端类型(或显示器) 有关。AN>
你需要使用termcap, terminfo 或curses 类的函数库, 或者系统提供的特殊函数。AN>
...
-
terminfo, 某些版本的termcap, 以及某些版本的curses 函数库有对这些非ASCII 键的支持。AN>
典型的, 一个特殊键会发送一个多字符序列(通常以...
-
如果文件大小指的是你从C 程序中可以读进的字符数量, 要得到这个精确的数字可能困难或不可能。AN>
Unix 系统函数stat() 会给出准确的答案。AN>
有...