上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 36 下一页
摘要: 5.13 标准I/O的替代软件 标准I / O库并不完善。K o r n和Vo〔1 9 9 1〕列出了它的很多不足之处—某些属于基本设计,但是大多数则与各种不同的实现有关。 在标准I / O库中,一个效率不高的不足之处是需要复制的数据量。当使用每次一行函数fgets和fputs时,通常需要复制两次数据:一次是在内核和标准I / O缓存之间(当调用read和write时),第二次是在标准I / O缓... 阅读全文
posted @ 2011-10-09 10:38 郭—大—侠 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 5.12临时文件 ISO C标准I/O提供了两个函数以帮助创建临时文件。 #include char*tmpnam(char*ptr);//返回指向唯一路径名的指针;FILE*tmpfile(void);//成功则返回文件指针;失败返回NULL;tmpnam产生一个与现在文件名不同的一个有效路径名字符串。每次调用它时,它都产生一个不同的路径名,最多调用次数是TMP_MAX(238328)。TMP... 阅读全文
posted @ 2011-10-09 10:27 郭—大—侠 阅读(1940) 评论(0) 推荐(0) 编辑
摘要: 5.11 实现细节 正如前述,在UNIX中,标准I/O库最终都要调用第3章中说明的I/O例程。每个I/O流都有一个与其相关联的文件描述符,可以对一个流调用fileno以获得其描述符。 #include int fileno(FILE*fp);返回值为与该流相关联的文件描述符。如果要调用dup或fcntl等函数,则需要此函数。为了了解你所使用的系统中标准I/O库的实现,最好从头文件开始。从中可以看... 阅读全文
posted @ 2011-10-08 20:34 郭—大—侠 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 5.10格式化I/O 1 格式化输出 执行格式化输出处理的是4个printf函数: #include int printf(const char*restrict format, ...);int fprintf(FILE*restrict fp, const char*restrict format, ...);上面两个函数的返回值:成功则返回输出字符数,失败则返回负值;int sprintf(... 阅读全文
posted @ 2011-10-08 20:20 郭—大—侠 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 5.9 定位流 有三种方法定位标准I/O流。 (1) ftell和fseek。它们都假定文件的位置可以存放在一个长整型中。 (2) ftello和fseeko函数。Single UNIX Specification引入了这两个函数,可以使文件偏移量不必一定使用长整形。它们使用off_t数据类型代替了长整形。 (3) fgetpos和fsetpos。这两个函数是新由ANSI C引入的。它们引进了一个... 阅读全文
posted @ 2011-10-08 18:59 郭—大—侠 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 5.8 二进制I/O 上面所述函数以一次一个字符或一次一行的方式进行操作。如果为二进制I/O,那么我们更愿意一次读或写整个结构。为了使用getc或putc做到这一点,必须循环通过整个结构,一次读或写一个字节,麻烦且费时。若使用fputs,它在遇到null字节时就停止,而在结构中可能含有null字节,所以不能使用每次一行函数实现这种要求。相类似,如果输入数据中包含有null字节或新行符,则fgets... 阅读全文
posted @ 2011-10-08 18:40 郭—大—侠 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 用gcc编译c程序的时候 经常会出现implicit declaration of function '...' 的warning偶经过这几天的经验,发现主要有2种情况会产生这种warning1 没有把函数所在的c文件生成.o目标文件2 在函数所在的c文件中定义了,但是没有在与之相关联的.h文件中声明第二种情况如此:camif_fsm.c中的函数定义:void camif_start_c_with_p(camif_cfg_t *cfg, camif_cfg_t *other){// cfg->gc->other = get_camif(CODEC_MINOR);cf 阅读全文
posted @ 2011-10-08 15:50 郭—大—侠 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 在 2.0 版,信号系统已从 GTK 移到 GLib,因此在函数和类型的说明中有前缀 "g_" 而不是 "gtk_"。我们不打算介绍 GLib 2.0 信号系统相对 GTK 1.2 信号系统扩展的细节。在我们详细分析helloworld程序之前,我们会讨论信号和回调函数。GTK 是一个事件驱动的工具包,意味着它会等在 gtk_main() 那里,直到下一个事件发生,才把控制权传给适当的函数。控制权的传递是使用“信号”的办法来完成的。(注意这里的信号并不等同于 Unix 系统里的信号,并且也不是用它们实现的,虽然使用的术语是一样的。) 当一个事件发生时,如 阅读全文
posted @ 2011-10-08 15:31 郭—大—侠 阅读(1215) 评论(0) 推荐(0) 编辑
摘要: 5.7 每次一行I/O 下面两个函数提供每次输入一行的功能。 #include char* fgets(char*restrict buf, int n, FILE*restrict fp);char* gets( char* buf);这两个函数都指定了缓存地址,读入的行将送入其中。gets从标准输入读,而fgets则从指定的流读。对于fgets,必须指定缓存的长度n。此函数一直读到下一个... 阅读全文
posted @ 2011-10-08 11:29 郭—大—侠 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 5.6 读和写流 一旦打开了流,则可在三种不同类型的非格式化I/O中进行选择,对其进行读、写操作。 (1) 每次一个字符的I / O。一次读或写一个字符,如果流是带缓存的,则标准I / O函数处理所有缓存。 (2) 每次一行的I / O。使用fgets和fputs一次读或写一行。每行都以一个新行符终止。当调用fgets时,应说明能处理的最大行长。 (3) 直接I / O。fread和fwrite函... 阅读全文
posted @ 2011-10-08 11:14 郭—大—侠 阅读(195) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 36 下一页