×
嵌入式 > 技术百科 > 详情

c标准文件io函数的原型和注意点

发布时间:2020-06-16 发布时间:
|

 fopen()


需要头文件:#include


函数原型:FILE *fopen(const char *path,const char *mode)


函数参数:path:要打开的文件的路径及文件名


mode:文件打开方式,见下


函数返回值:成功:指向文件的FILE类型指针


失败:NULL


以下是mode参数允许使用的取值及说明:


r或rb 以只读的方式打开文件,该文件必须存在


r+或r+b 以可读可写的方式打开文件,该文件必须存在


w或wb 以只写的方式打开文件,若文件不存在则创建该文件;若文件存在则擦除文件原始内容,从文件开头开始操作文件


w+或w+b 以可读可写的方式打开文件,若文件不存在则创建该文件;若文件存在则擦除文件原始内容,从文件开头开始操作文件


a或ab 以附加的方式打开只写文件,若文件不存在则创建该文件;若文件存在,写入的数据追加在文件尾,即文件的原始内容会被保留


a+或a+b 以附加的方式打开可读可写文件,若文件不存在则创建该文件;若文件存在,写入的数据追加在文件尾,即文件的原始内容会被保留


}


gets()、fgets()


需要头文件:#include


函数原型:char *gets(char *s)


char *fgets(char *s,int size,FILE *stream)


函数功能:


假设buff长度为MAX;那么使fgetc停止的方式就有两种:


1. 当读到/n时,就把/n的ascii写入buff便停止,在后面补上一个'\0';


2. 当读到 size-1 个字符都没读到/n时那么就结束,后面补上一个'\0';


函数参数:s:存放输入字符的缓冲区地址


size:输入的字符串长度


stream:输入文件流


函数返回值:


成功:s


失败或读到文件尾:NULL


puts()、fputs()


需要头文件:#include


函数原型:int puts(const char *s)


int fputs(const char *s,FILE *stream)


函数参数:s:存放输出字符的缓冲区地址


stream:输出文件流


函数返回值:成功:非负数


失败:EOF


scanf()、fscanf()、sscanf()


需要头文件:#include


函数原型:int scanf(const char *format,...);


int fscnaf(FILE *fp,const char *format,...);


int sscanf(char *buf,const char *format,...);


函数参数:format:输入的格式


fp:待输入的流


buf:待输入的缓冲区


函数返回值:成功:读到的数据个数


失败:EOF


printf()、fprintf()、sprintf()


需要头文件:#include


函数原型:int printf(const char *format,...);


int fprintf(FILE *fp,const char *format,...);


int sprintf(char *buf,const char *format,...);


函数参数:format:输出的格式


fp:待输出的流


buf:待输出的缓冲区


函数返回值:成功:输出的字符数


失败:EOF


fread()


需要头文件:#include


函数原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);


函数参数:ptr:存放读入数据的缓冲区


size:读取的每个数据项的大小(单位字节)


nmemb:读取的数据个数


stream:要读取的流


函数返回值:


成功:实际读到的nmemb数目


失败:0


fwrite()


需要头文件:#include


函数原型:size_t fwrite(void *ptr,size_t size,size_t nmemb,FILE *stream);


函数参数:ptr:存放写入数据的缓冲区


size:写入的每个数据项的大小(单位字节)


nmemb:写入的数据个数


stream:要写入的流


函数返回值: 成功:实际写入的nmemb数目


失败:0


feof()/ferror()可以函数判断是因为读操作错误哈市读到文件尾部。


在打开流的时候,偏移位置为0(即文件开头)


fseek()


需要头文件:#include


函数原型:int fseek(FILE *stream,long offset,int whence);


函数参数:stream:要定位的流


offset:相对于基准点whence的偏移量


whence:基准点(取值见下)


函数返回值:成功:0,改变读写位置


失败:EOF,不改变读写位置


其中第三个参数whence的取值如下:


SEEK_SET:代表文件起始位置,数字表示为0


SEEK_CUR:代表文件当前的读写位置,数字表示为1


SEE

K_END:代表文件结束位置,数字表示为2


函数ftell()


需要头文件:#include


函数原型:int ftell(FILE *stream);


函数参数:stream:要定位的流


函数返回值:成功:返回当前的读写位置


失败:EOF



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil5(MDK5)在调试(debug)过程中遇到的问题