3.7 read函数用read函数从打开文件中读数据。#include ssize_t read(int filedes, void *buff, size_t nbytes);返回:读到的字节数,若已到文件尾为0,若出错为-1如read成功,则返回读到的字节数。如已到达文件的尾端,则返回0。有多种情况可使实际读到的字节数少于要求读字节数:

• 读普通文件时,在读到要求字节数之前已到达了文件尾端。若在到达文件尾端之前还有30个字节,而要求读100个字节,则read返回30,下一次再调用read时,它将返回0(文件尾端)。

• 当从终端设备读时,通常一次最多读一行(第11章将介绍如何改变这一点)。

• 当从网络读时,网络中的缓冲机构可能造成返回值小于所要求读的字节数。

• 某些面向记录的设备,例如磁带,一次最多返回一个记录。读操作从文件的当前位移量处开始,在成功返回之前,该位移量增加实际读得的字节数。POSIX.1在几个方面对此函数的原型作了更改。其经典定义是:

int read(int filedes, char buff, unsigned nbytes);为了与ANSI C一致,其第二个参数由char 改为void 。在ANSI C中,类型void 用于表示类属指针。其次,其返回值必须是一个带符号整数(ssize_t),以返回正字节数、0(表示文件尾端)或-1(出错)。第三个参数在历史上是一个不带符号整数,以允许一个16位的实现可以一次读或写至65534个字节。在1990 POSIX.1标准中,引进了新的基本系统数据类型。

如果你想进一步了解,可以参考以下资源:c语言文件读写函数ANSI C函数库文件读写操作c与API函数。这些链接将带你进入一个更深层次的探索,全面了解read函数及其应用的种种奥秘。

还在等什么?快点击这些链接,开启你的C语言编程之旅吧!