C语言基础10 - 文件及标准IO

标准io-stdio,封装后函数,man3

文件io,内核函数  man2

打开文件--fopen

读写--fread,fwrite,fgetc,fputc,fgets,fputs,fscanf,fprintf,sscanf,sprintf

定位--fseek,rewind,ftell

关闭文件--fclose,feof

文件分为两类

一类为文本文件,即ascii码流文件; ---用vim和记事本打开能看懂是文本文件---fgets,fgetc适用于文本文件;

另一类是二进制文件;-------------看不懂乱码是二进制文件;

 fopen 路径  参数

 r       只读,文件必须存在

 r+     读写,文件必须存在

 w     只写,文件不存在创建,在则清空

 w+   读写,文件不存在创建,在则清空

 a       只写   文件存在追加,文件不存在创建

 a+     读写   

windows系统中处理二进制文件要加b

Rb rb+ wb wb+

打开不关闭会内存泄漏,打开自动申请堆区内存,把文件从物理内存映射过去

文件创建失败

1.权限不够

2.磁盘满了

 fread fwrite 可以处理任何文件

标准IO:

ANSI封装的一组基于文件IO的一组用于输入输出的函数库

<stdio.h>

I  : input   输入  → 默认设备是stdin

O: output 输出  → 默认设备是stdout

标准IO读写文件的框架

打开         → 读/写                 →         定位         → 关闭

  fopen    fgetc/fputc                        fseek                fclose

                fgets/fputs                        ftell              feof

                 fread/fwrite                rewind

fscanf/fprintf

sscanf/sprintf

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

//功能 以指定的方式打开指定的文件

//参数         pathname  文件名

//                mode           打开方式

//返回值 成功: 文件流指针

//                失败: NULL,并带出错误编码

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

| mode | 含义 |

| "r" | 只读,文件必须存在,不存在打开失败 |

| "r+" | 读写,文件必须存在,不存在打开失败 |

| "w" | 只写,文件存在则清空,不存在则创建 |

| "w+" | 读写,文件存在则清空,不存在则创建 |

| "a" | 只写,文件存在则追加,不存在则创建 |

| "a+" | 读写,文件存在则追加,不存在则创建 |

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

void fclose(FILE *stream);

//功能:关闭文件

//参数:stream 文件流指针

//返回值:成功 0

//                 失败 EOF

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

int fgetc(FILE *stream);

//功能:从stream中读取一个字符

//参数:stream 文件流指针

//返回值:成功 读取字符的ascii值

//                 失败 EOF

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

int fputc(int c,FILE *stream);

//功能:将字符c写到stream所指向的文件中

//参数:        c  输出的字符

//                stream 文件流指针

//返回值:成功 输出字符的ascii值

//                 失败 EOF

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

//功能 从指定文件中读取size字节的内容,存储到s所指向的内存中

//参数 s  存储数据的内存首地址

//          size  读取数据的字节大小

//          stream 文件流指针

//返回值        成功        s

//                失败 NULL

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

//功能 将s所指向的字符串输出到文件中

//参数 s  存储数据的内存首地址

//          stream 文件流指针

//返回值        成功        >=0的数字

//                失败 EOF

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

int fscanf(FILE *stream,const char *format,...);

//功能:从stream指向的文件中按照format格式读取数据

//参数:stream 文件流指针    format指定个格式

//返回值:成功读取项目的个数

失败 -1

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

//功能:从s指向的内存中按照format格式读取数据

//参数:stream 文件流指针    format指定个格式

//返回值:成功读取项目的个数

失败 -1

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

//功能:将数据按照format格式,输出到指定的stream文件流中

//参数:stream 文件流指针   format指定个格式

//返回值:成功写入项目的个数

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

//功能:将数据按照format格式,输出到指定的s内存区域中

//参数:s 内存首地址   format指定个格式

//返回值:成功写入项目的个数

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

//功能:从文件流指针stream所指向的文件中读取nmemb个项目,每个项目大小

//           size字节,并存放到ptr指针指向的内存区域中

//参数:        ptr          存储数据的内存首地址

//                   size         一个项目的大小

//                   nmemb        项目个数

//                stream         文件流指针

//返回值:<= nmemb的个数        

失败返回0

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

//功能:将ptr指针指向的数据,按照nmemb个项目,每个项目大小size,输出到

//      stream所指向的文件中

//参数:        ptr          存储数据的内存首地址

//                   size         一个项目的大小

//                   nmemb        项目个数

//                stream         文件流指针

//返回值:<= nmemb的个数        

失败返回0

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

//功能:将文件流指针从whence位置偏移offset个字节

//参数:stream  文件流指针

//           offset  偏移量  <0向文件开头偏移 >0向文件结尾偏移

//           whence  指定位置

//           SEEK_SET 文件开头 SEEK_CUR 当前位置 SEEK_END文件结尾        

//返回值:成功  0

//                 失败  -1

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

long ftell(FILE *stream);

//功能:得到当前文件指示器的偏移量

//参数:文件流指针 stream

//返回值:文件指示器距离文件开头的偏移量

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

void rewind(FILE*stream);

//功能:将文件指示器偏移到文件开头

//参数:文件流指针 stream

//返回值:无

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

使用前需要指一下

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

int feof(FILE *stream);

//功能:判断是否到达文件结尾

//参数:文件流指针 stream

//返回值:到达结尾  非0

//                 未到达结尾 0

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值