-
问题:为什么这段代码不行?
char *answer;
printf("Type something:\n");
gets(answer);
printf("You typ...
-
一般地说, 使用指针的时候, 你必须总是考虑内存分配, 除非明确知道编译器替你做了此事。
如果一个库函数的文档没有明确提到内存分配, 那么通常需要调用者来考虑。Unix 型的手册...
-
问题:
为什么有些代码小心地把malloc 返回的值转换为分配的指针类型。在ANSI/ISO 标准C 引入void * 一般指针类型之前,
这种类型转换通常用于在不兼容指针类型...
-
1983 年, 美国国家标准协会(ANSI) 委任一个委员会X3J11 对C 语言进行标准化。
经过长期艰苦的过程, 该委员会的工作于1989 年12 月14 日正式被批准为AN...
-
问题:
很多ANSI 编译器在遇到以下代码时都会警告类型不匹配。
extern int func(float); int func(x) float x; { . . .
你...
-
有些ANSI 前的编译器/预处理器把下面这样的宏
#define TRACE(var, fmt) printf("TRACE: var = fmt\n", var)
解释为
...
-
有两个程序protoize 和unprotoize 可以在有原型和无原型的函数定义和声明之间相互转换。
这些程序不能完全完成“经典” C 和...
-
某些构造随编译器和硬件的实现而变化, 这一直是C语言的一个特点。
这种有意的不严格规定可以让编译器生成效率更高的代码, 而不必让所有程序为了不合理的情况承担额外的负...
-
ANSI/ISO 标准C 函数mktime() 和difftime() 对这两个问题提供了一些有限的支持。
mktime() 接受没有规格化的日期, 所以可以用一个日期的stru...
-
标准C 库函数就有一个: rand()。
你系统上的实现可能并不完美, 但写一个更好的并不是一件容易的事。如果你需要实现自己的随机数生成器, 有许多这方面的文章可供参考; 象下面...
-
直接的方法是rand() % N /* 不好*/试图返回从0 到N ¡ 1 的数字。
但这个方法不好, 因为许多随机数发生器...
-
你可以调用srand() 来初始化模拟随机数发生器的种子, 用的值可以是真正随机数或至少是个变量, 例如当前时间。
这儿有个例子:#include <stdlib.h>...
-
许多地方有可能出错。
下面是一些通常的检查要点:1、未初始化的局部变量, 参见问题7.1。2、整数上溢, 特别是在一些16 比特的机器上...
-
如果文件大小指的是你从C 程序中可以读进的字符数量, 要得到这个精确的数字可能困难或不可能。
Unix 系统函数stat() 会给出准确的答案。
有...
-
试试能否使用opendir() 和readdir() 函数, 它们是POSIX 标准的一部分, 大多数Unix 变体都支持。
MS-DOS, VMS 和其它系统下也...
-
很不幸, 这没有可移植解决方法。
下面是一些你可以在你的系统中寻找的函数:
clock(), delay(), ftime(), getimeofday(), msleep()...
-
基本步骤是调用SIgnal():
#include <SIgnal.h>
SIngal(SIGINT, SIG_IGN);
就可以忽略中断信号, 或者:
ext...
-
“不能使用非标准、依赖系统的函数,程序需要兼容ANSI!”
你很不走运。
要么你误解了要求, 要么这不可能做到。
ANSI...
-
首先, 尽管一个全局变量或函数可以(在多个编译单元中) 有多处“声明”, 但是“定义” 却只能允许出现一次。
定义是分配空间并赋初...
-
用<stdarg.h>提供的辅助设施。
下面是一个把任意个字符串连接起来的函数, 结果存在malloc 的内存中:
#include <stdlib.h>...