-
一种流行的技巧是用一个单独的用括弧括起来的的“参数” 定义和调用宏,
参数在宏扩展的时候成为类似printf() 那样的函数的...
-
1983 年, 美国国家标准协会(ANSI) 委任一个委员会X3J11 对C 语言进行标准化。
经过长期艰苦的过程, 该委员会的工作于1989 年12 月14 日正式被批准为AN...
-
问题:
很多ANSI 编译器在遇到以下代码时都会警告类型不匹配。
extern int func(float); int func(x) float x; { . . .
你...
-
有两个程序protoize 和unprotoize 可以在有原型和无原型的函数定义和声明之间相互转换。
这些程序不能完全完成“经典” C 和...
-
某些构造随编译器和硬件的实现而变化, 这一直是C语言的一个特点。
这种有意的不严格规定可以让编译器生成效率更高的代码, 而不必让所有程序为了不合理的情况承担额外的负...
-
问题:
我发现如果坚持检查返回值以确保用户输入的是我期待的数值, 则 scanf() 的使用会安全很多, 但有的时候好像会陷入无限循环。在scanf() 转换数字的时候, 它遇到...
-
scanf() 有很多问题—— 参见问题12.15, 12.16 和12.17。
而且, 它的%s 格式有着和gets() 一样的问题(参见问题12.20...
-
strncpy() 最初被设计为用来处理一种现在已经废弃的数据结构——定长, 不 必’n0’ 结束的“字符串&rdquo...
-
确保你知道经典的正则表达式和文件名通配符的不同。
前者的变体在Unix工具ed 和grep 等中使用, 后者的变体在多数操作系统中使用。
有许多匹配正则表达式的包可以利用。
...
-
标准C 库函数就有一个: rand()。
你系统上的实现可能并不完美, 但写一个更好的并不是一件容易的事。如果你需要实现自己的随机数生成器, 有许多这方面的文章可供参考; 象下面...
-
直接的方法是rand() % N /* 不好*/试图返回从0 到N ¡ 1 的数字。
但这个方法不好, 因为许多随机数发生器...
-
你可以调用srand() 来初始化模拟随机数发生器的种子, 用的值可以是真正随机数或至少是个变量, 例如当前时间。
这儿有个例子:#include <stdlib.h>...
-
这一段信息不可移植。
一些旧系统提供一个非标准函数nargs()。
然而它的可信度值得怀疑, 因为它的典型返回值是参数的字节长度, 而不是参数的个数...
-
“程序在执行前崩溃,用调试器单步跟进,在main()之前死了”
也许你定义了一个或多个非常大的局部数组(超过上千字节)。
许...
-
许多地方有可能出错。
下面是一些通常的检查要点:1、未初始化的局部变量, 参见问题7.1。2、整数上溢, 特别是在一些16 比特的机器上...
-
程序设计风格, 就象写作风格一样, 是某种程度的艺术, 不可以被僵化的教条所束缚。
虽然风格的探讨经常都是围绕着这些条例。
对于goto 语句, 很早以前, 就被注意到, 随意...
-
这些功能跟你所用的终端类型(或显示器) 有关。
你需要使用termcap, terminfo 或curses 类的函数库, 或者系统提供的特殊函数。
...
-
terminfo, 某些版本的termcap, 以及某些版本的curses 函数库有对这些非ASCII 键的支持。
典型的, 一个特殊键会发送一个多字符序列(通常以...
-
从前, Unix 下有一套相当不错且小巧的设备独立的绘制函数(plot(3) 和plot(5))。
由Robert Maier 写的GNU libplot 函数库保持了同样的精神...
-
试试能否使用opendir() 和readdir() 函数, 它们是POSIX 标准的一部分, 大多数Unix 变体都支持。
MS-DOS, VMS 和其它系统下也...