标准I/O 库函数

:一组实现好的函数接口

一.printf函数族

 

int printf(const char *format, ...);                     //默认向stdout输出

int fprintf(FILE *stream, const char *format, ...);      //指定一个流输出

int sprintf(char *str, const char *format, ...);         //指定一个地址输出

 

二.fopen 打开文件

FILE *fopen(const char *path, const char *mode);

功能:打开一个指定的文件 

参数:

@path    文件所在的路径

@mode   打开方式

 

只读的方式打开,文件必须存在

r+ :  读写的方式打开,文件必须存在

 

只写的方式打开,文件不存在创建,文件存在则清空

w+ :  读写的方式打开,文件不存在创建,文件存在则清空

 

追加的方式打开,文件不存在创建,只能写,写在文件尾部进行

a+ :  读写的方式打开,文件不存在创建,读从文件头开始,写从文件尾部开始

 

返回值:成功返回流指针,失败返回NULL(0)

三.单个字符的读写 

//读

int fgetc(FILE *stream);

功能:从stream读取字符

返回值:成功返回字符,失败 或者 读到文件尾部返回EOF(-1) 

//写

int fputc(int c, FILE *stream);

功能:将指定的字符,写入流

参数:

@c  写入的字符

@stream 文件

返回值:成功返回写入的字符,失败返回EOF(-1)

四. 字符串读写

//读

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

功能:从指定的流,读取多个字符存放在s指向的地址

参数:

@s       读取数据存放的首地址

@size    期望读取的大小

@stream  文件 

返回值:成功返回s,失败或者读到文件尾部返回NULL(0)

注意:

1.每次fgets最多只能读取size - 1个字符 

2.每次读取结束的时候都会自动加'\0'

3.如果读取的过程中,遇到'\n',则读取结束,'\n'字符会被读走

char *gets(char*s)    注:gets函数并不将换行符(\n)读入,并且读完后自动加'\0'     

//写

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

功能    :将字符串写到指定的流

参数    :

@s        字符串所在的首地址

@stream   文件

返回值  :成功返回写入的字符个数,失败返回-1

注意:如果遇到'\0'字符则写结束,并且不写入

int puts(const char *s)          注:将一个以‘\0’结束的字符写入输出,但是‘\0’将被替换为'\n'

五.对像读写

对像:可以是基本类型,也可以结构体类型

 //读 

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

size_t fread(读取数据存放的地址,对像的大小,要求读取的对像个数,流); 

注意:

1.nmemb 是要求读取对像的个数

2.size  对像的大小

3.返回值:返回实际读取的对像的个数

4.fread每次的读取的大小:实际读取的对像个数 * 对像的大小

size_t是一个整型

//写

size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

size_t fwrite(写入数据存放的地址,对像的大小,要求写入的对像个数,流);

六、文件定位 

int fseek(FILE *stream, long offset, int whence);

功能:更改内核中的offset值 

参数:

@stream 打开的文件  

@offset 偏移值, offset > 0 向后偏移,offset < 0 向前偏移 

@whence  SEEK_SET 从文件头,SEEK_CUR 从当前位置开始,SEEK_END 从文件尾部开始 

返回值:成功返回0,失败返回-1 

long ftell(FILE *stream);

功能:获得内核中offset值

返回值:返回文件从头开始的偏移值

void rewind(FILE *stream);

功能:定位到文件头部

等价于fseek(fp,0L,SEEK_SET);

获得文件的大小 

fseek(fp,0,SEEK_END);

file_size = ftell(fp);

七.目录操作

1.打开目录

DIR *opendir(const char *name);

功能:打开目录文件 

返回值:成功返回目录流指针,失败返回NULL 


2.读目录 

struct dirent *readdir(DIR *dirp);

功能:读目录 

参数:

@dirp 目录流指针  

返回值:成功,返回struct dirent *,读到目录尾部返回NULL

八.关闭文件

fclose(FILE*fp)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值