C:文件操作指令

C中的文件操作
  • #include<stdio.h>
  • 主要对象是磁盘;普通文件与目录文件;
文件路径
  1. 绝对路径(带根目录从最上级开始;有盘符)

C:\Windows\AppReadiness\test.txt

  1. 相对路径(当前路径)

.\test.txt

  • .表示当前目录;
  • …表示当前路径的上级目录;
文件名
  • 所谓的文件后缀名若是修改,不会对文件内容或文件类型产生任何影响,只是告诉系统默认使用哪种程序来打开;
文件类型
  1. 文本文件
  • 以ASC字符形式存储;存的是字符串;
  1. 二进制文件
  • 就以二进制存储;直接打开就是乱码;
文件缓冲区
什么是缓冲区?
  • 先存放数据在内存里,然后一次性放在外存里,这时内存扮演的角色就是缓冲区;减少开销很大的操作的次数,可以提升运行性能;
文件操作核心步骤
打开文件

fopen(const char*File,const char* Node)

  •     第一个参数:路径(绝对&相对);第二个参数:打开方式(见附表)
    
FILE* fp = fopen("d:/test.txt","r");//两种方式都可以
FILE* fp1 = fopen("D:\\test.txt","r");//文件指针也叫做"句柄";
if (fp==NULL)//文件打开失败返回指针检查;
{
   printf("文件打开失败!%s\n",strerror(errno));//返回错误码,errno是宏;使用"#include<errno.h>",strerror()直接显示错误码的含义;
   perror("文件打开失败:");//直接根据错误类型返回含义还可以自定义,很智能;
   return 1;
}
关闭文件

fclose (fp);

  • 如果打开文件之后,忘记关闭文件,会导致句柄泄露/资源泄露/文件描述符泄露(一个程序可以打开的文件书是有限的);程序结束文件关掉;
读文件

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

  • size_t size:元素长度;size_t count第二个参数:元素个数;
char buf[1024] = {0};//创建存放文件数据的缓冲区;
fread(buf,1,4,fp);//返回实际读取元素个数;因为你要1000个元素但文件里可能只有100个;
写文件

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

char buf[1024] = "aaa";//存放进文件的数据;
fread(buf,1,strlen(buf),fp);//注意修改文件的读取方式为"w";
文件的随机读写

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

  • offset:偏移量;origin:起始位置
附表:
文件使用方式含义如果指定文件不存在
"r"只读打开文本文件输入数据出错
"w"只写打开文本文件输出数据建立一个新的文件
"a"追加向文本文件末尾添加数据出错
"r+"读写打开一个文本文件进行读写出错
"w+"读写-同上-建立一个新的文件
"a+"读写打开文本文件在文件尾进行读写建立一个新的文件
"rb"只读打开二进制文件输入数据出错
"wb"只写打开二进制文件输出数据建立一个新的文件
"ab"追加向二进制文件末尾添加数据出错
"rb+"读写打开一个二进制文件进行读写出错
"wb+"读写-同上-建立一个新的文件
"ab+"读写打开二进制文件在文件尾进行读写建立一个新的文件
  • 按照写方式打开会清空文本所有内容,所以最好使用"a";
tips
  • 文件指针也叫做句柄,"遥控器"方便操作;天子对于曹操
  • F12,Alt+g跳转到定义;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值