标准I/O库及其头文件stdio.h为底层系统调用提供了一个通用的接口。这个库已经成为ANSI标准C的一部分。在标准I/O库中,与底层文件描述对应的是流(stream),它被实现为指向结构FILE的指针。
本文地址:http://wuyudong.com/2016/10/23/2871.html,转载请注明出处。
在启动程序的时候,有3个文件流是自动打开的:stdin、stdout、stderr,都是在stdio.h头文件定义,分别代表标准输入、标准输出、标准错误输出。与底层文件描述符0、1、2相对应。
1、fopen函数
#include <stdio.h> FILE *fopen(const char *filename, const char *mode);
fopen打开由filename参数指定的文件,并把它与一个文件流关联,mode指定打开方式
2、fread函数
#include <stdio.h> size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream);
fread函数用于从一个文件流里读取数据,数据从stream读到由ptr指向的数据缓冲区里,size指定每个记录的长度,计数器nitems指定要传输的记录个数。返回成功读取到数据缓存区里的记录数
3、fwrite函数
从指定的数据缓冲区读取数据写到输出流中,返回值是成功写入的记录个数
#include <stdio.h> size_t fwrite (const void *ptr, size_t size, size_t nitems, FILE *stream);
4、fclose函数
fclose函数关闭指定的文件流stream,使所有的尚未写出的数据都写出
#include <stdio.h> int fclose(FILE *stream);
5、fflush函数
作用是把文件流里的所有未写出的数据写出,注意:调用fclose函数的时候隐含执行fflush一次,所以在fclose函数之前不需要执行fflush函数
#include <stdio.h> int fflush(FILE *stream);
6、fseek函数
fseek函数与lseek系统调用对应的文件流函数,它在文件流里为下一次读写操作指定位置
whence为下列其中一种:(SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2).
SEEK_SET 将读写位置指向文件头后再增加offset个位移量。
SEEK_CUR 以目前的读写位置往后增加offset个位移量。
SEEK_END 将读写位置指向文件尾后再增加offset个位移量。
当whence 值为SEEK_CUR 或SEEK_END时,参数offet允许负值的出现。
参数offset 为根据参数whence来移动读写位置的位移数。Offset:偏移量,每一读写操作所需要移动的距离,单位是字节的数量,可正可负(向前移,向后移)。
返回0表示成功,返回-1表示失败并设置errno指出错误
#include <stdio.h> int fseek(FILE *stream, long int offset, int whence);
7、fgetc、getc和getchar函数
fgetc函数从文件流里取出下一个字节并把它作为一个字符返回。
getc与fgetc的作用一样,但是它可能被实现成一个宏
getchar函数的作用相当于getc(stdin),从标准输入里读取下一个字符
#include <stdio.h> int fgetc(FILE *stream); int getc(FILE *stream); int getchar();
8、fputc、putc和putchar函数
fputc函数把一个字符写到一个输出文件流中,返回写入的值,如果失败就返回EOF。putc的作用也类似于fputc,也是被实现为一个宏,putchar函数相当于 putc(c, stdout),把单个字符写出到标准输出
#include <stdio.h> int fputc(int c, FILE *stream); int putc(int c, FILE *stream); int putchar(int c);
9、fgets和gets函数
fgets函数从输入文件流stream里读取一个字符串
#include <stdio.h> char *fgets(char *s, int n, FILE *stream); char *gets(char *s);
参数:
s: 字符型指针,指向存储读入数据的缓冲区的地址。
n: 从流中读入n-1个字符
stream : 指向读取的流。
返回值:
1. 当n<=0 时返回NULL,即空指针。
2. 当n=1 时,返回空串””.
3. 如果读入成功,则返回缓冲区的地址。
4. 如果读入错误或遇到文件结尾(EOF),则返回NULL.
gets函数类似于fgets,只不过它从标准输入读取数据并丢弃遇到换行字符,它在接收字符串的尾部加上一个null字节,gets存在安全隐患,应该避免使用并用fgets代替
Comments