常用标准I/O库函数总结

1:fopen()

fopen()函数主要用于对文件和终端的输入输出。但是如果要对设备的行为进行更为明确的行为控制,那最好使用底层系统调用,因为这样可以避免库函数带来的一些非预期的潜在副作用。

函数原型:

#include <stdio.h>
 
FILE *fopen(const char *filename, const char *mode);

filaname:指定的文件名,fopen会把它与一个文件流关联起来。
 
mode:指定文件的打开方式
 
返回值:成功时返回一个FILE*指针,失败返回NULL值,NULL定义在stdio.h中。
 

mode参数如下所示:
 
"r"/"rb":只读方式打开
"w"/"wb":只写方式打开,把文件长度截为0(你可把它想象为>)
"a"/"ab":只写方式打开,新内容追加到文件尾(你可以想象成>>)
"r+"/"r+b"/"rb+":以修改方式打开(读写)
"w+"/"w+b"/"wb+":以修改方式打开,同时把文件内容截为0
"a+"/"a+b"/"ab+":以修改方式打开,新内容追加到文件结尾
 
 
linux会把所有文件都看成是二进制文件,所以那个"b"表示文件是二进制。
 
 
 
2:fread()函数
 
 
fread()函数的主要作用是从一个文件流里读取数据,数据从stream读到由ptr指定的数据缓冲区里面。
 
 
函数原型:
 
#include <stdio.h>
 
size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream);
 
 
ptr:数据读到ptr指定的缓冲区里面。
 
size:每个数据记录的长度(类似与char,int,long,float之类,指代每次读取块的大小)
 
nitems:传输的记录个数
 
stream:指定要读取的数据缓冲区
 
返回值:读到缓冲区的记录个数(非字节),如果读到文件尾,其返回值可能小于nitems,甚至可以是0(读取文件为空)。
 
 
 
3:fwrite()函数
 
 
fwrite()函数从stream获取数据记录写到ptr中,返回值是成功写入的记录个数。
 
 
函数原型:
 
#include <stdio.h>
 
size_t fwrite(const void *ptr, size_t size, size_t items, FILE *stream);
 
 
它的接口和fread很像,参考fread。
 
 
 
4:fclose()函数
 
 
fclose()函数关闭指定的文件刘stream,使所有未写出的内容全部写出。
 
 
函数原型:
 
#include <stdio.h>
 
int fclose(FILE *stream);
 
 
stream:指定要关闭的文件流stream
 
返回值:如果成功返回0,失败返回EOF,同时会向全局变量errorn写入错误信息码。
 
 
 
5:fflush()函数
 
 
fflush()函数的主要作用是把文件流的所有未写出的内容立刻写出。
 
 
函数原型:
 
#include <stdio.h>
 
int fflush(FILE *stream);
 
接口同fclose.
 
 
 
 
6:fseek()函数
 
 
fseek()函数主要作用是在文件流里面为下一次读写指定位置。
 
 
函数原型:
 
#include <stdio.h>
 
int fseek(FILE *stream, long int offset, int whence);
 
 
stream:指定操作的文件流
 
offset:指定位置
 
whence:指定偏移方式,具体形式类似系统调用lseek。
 
返回值:成功返回0,失败返回-1,同时设置errno指出错误。
 
 
 
 
7:fgetc,getc,getchar函数
 
 
fgetc()从文件流取出下一个字节并把它作为一个字符返回,如果到达文件结尾或者出现错误的时候返回EOF。其中getchar()从标准输入读取数据。
 
 
函数原型:
 
 
#include <stdio.h>
 
int fgetc(FILE *stream);
int getc(FILE *stream);
int getchar();
 
 
 
8:fputc,putc,putchar函数
 
 
fputc()函数把一个字符写道一个输出文件流中。如果成功返回写入的值,失败则返回EOF。其中puchar()函数将单个字符写道标准输出。
 
 
#include <stdio.h>
 
int fputc(int c, FILE *stream);
int putc(int c, FILE *stream);
int putchar();
 
 
 
 
9:fgets()和gets()函数
 
 
fgets()函数从输入文件流stream读取一个字符串,并把读到的字符写到ptr指向的缓冲区,当遇到如下情况停止:遇到换行符,已经传输n-1个字符,或者到达文件尾。它会把遇到的换行符也传递到接收字符串里去,再加上一个表示结尾的空字节\0。
 
 
gets()函数从标准输入读取数据并丢弃遇到的换行符,它在接受字符串的尾部加上NULL。
 
 
函数原型:
 
 
#include <stdio.h>
 
char *fgets(char *ptr, int n, FILE *stream);
char *gets(char *ptr);
 
 
 
10:printf,fprintf,sprintf函数
 
 
printf系列函数能够对各种不同类型的参数进行格式化编排和输出。
 
 
printf函数把自己的输出送到标准输出;
 
fprintf函数把自己的输出送到一个指定的文件流;
 
sprintf函数把自己的输出和一个结尾空字符写到s指向的缓冲区。
 
 
 
函数原型:
 
#include <stdio.h>
 
int printf(const char *format, ...);
 
int sprintf(char *s, const char *format, ...);
 
int fprintf(FILE *stream, const char *format, ...);
 
format:指定输出的格式;
 
s:字符串缓冲区
 
stream:指定的文件流
 
 
 
 
11:scanf,fscanf和sscanf函数
 
 
scanf系列函数从一个文件流读取数据并写到指定地址的变量。
 
scanf函数将读入的值保存在对应的变量里;
 
 
函数原型:
 
 
#include <stdio.h>
 
int scanf(const char *format, ...);
 
int fscanf(FILE *stream, const char *format, ...);
 
int ssacnf(const char *s, const char *format, ...);
 
 
 
12:文件流错误
 
 
通过检查文件流的状态来确定是否发生错误;
 
ferror函数测试一个文件流的错误标识,如果被设置返回一个非0值,否则返回0.
 
feof函数测试一个文件流的文件尾标识,如果被设置就返回一个非0值,否则返回0.
 
clearerr函数清楚有stream指定的文件流的文件尾标识和错误标识。
 
 
函数原型:
 
 
#include <stdio.h>
 
int ferror(FILE *stream);
int feof(FILE *stream);
void clearerr(FILE *stream);
 
 
 
 
 
13:文件流和文件描述符
 
 
每个文件流都有一个底层描述符相关联。
 
 
fileno函数可以确定文件流使用那个底层描述符;
 
fdopen函数在一个已经打开的文件描述符上创建一个新的文件流。
 
 
 
函数原型:
 
#include <stdio.h>
 
int fileno(FILE *stream);
 
FILE *fdopen(int fildes, const char *mode);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值