读写文件笔记

文章讨论了使用指针数组进行大量文件操作以提高程序运行速度的方法,尤其是在处理800多个文件时,速度提升显著。同时,文中还提及了VS中的文件数量限制、不同文件操作模式(如r,w,a等)、以及如何正确关闭文件以避免资源泄漏问题。
摘要由CSDN通过智能技术生成

FILE* file[100];
int filenum;
for(filenum=0;filenum<100;filenum++)
{
sprintf(filename,“D\\xxx\\xx.xx",filenum);
if(NULL==(file[filenum]=fopen(filenum,"wb"))
break;
fclose(file[filenum]);
file[filenum]=fopen(filenume,"ab+")
}

for(filenum=0;filenum<100;filenum++)
{
sprintf(filename,“D\\xxx\\xx.xx",filenum);
fwrite(xx,sizeof(short),xx,xxx);//xx为所需变量或其他可替换参数
}





上述为部分代码笔记,并非可执行的代码段仅为自用;

        使用指针数组可以加快文件读写的速度相比于一次一次的open,close,使用指针数组进行较大数量的文件操作可以在一定程度上提高程序的运行速度。项目中写入800+文件在采用指针数组方法之后速度提升将近三倍;

使用VS时对指针有数量限制,默认约为500多点具体记不清了,可以使用以下语段进行更改

_settmaxstdio(1024);

以下是一些关于文件操作时候文件属性相关内容

原文地址https://blog.csdn.net/m0_56384372/article/details/119324207?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170536573616800213028515%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170536573616800213028515&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-119324207-null-null.142^v99^pc_search_result_base7&utm_term=%E6%96%87%E4%BB%B6ab%2B&spm=1018.2226.3001.4187

  1. 操作文本文件
    " r "(只读):为了输入数据,打开一个已经存在的文本文件.
    " w "(只写):为了输出数据,打开一个文本文件.
    " a "(追加):向文本文件尾添加数据.
    " r+ "(读写):为了读和写,打开一个文本文件.
    " w+ “(读写):为了读和写,建一个新的文件.
    " a+”(读写):打开一个文件,在文件尾进行读写.
    注:使用"w"方式打开会先清空原来内容,"a"方式打开不会影响原来内容,会在旧内容后面新增新内容.
  2. 操作二进制文件
    " rb "(只读):为了输入数据,打开一个二进制文件.
    " wb "(只写):为了输出数据,打开一个二进制文件.
    " ab "(追加):向一个二进制文件尾添加数据.
    " rb+ "(读写):为了读和写,打开一个二进制文件.
    " wb+ "(读写):为了读和写,新建一个二进制文件.
    " ab+ "(读写):打开一个二进制文件,在文件尾进行读和写.
    <2> 打开文件时可以使用errno来检查打开成功还是失败,errno是0就是成功,非0就是不成功,不同的errno值表示不同的出错原因,可以通过搜索引擎查到具体的原因这个方式比较麻烦,更简单的办法就是可以使用strerror这个函数.
    (2) 关闭文件fclose
  3. 一旦打开文件就需要用fclose关闭文件,否则就会出现类似"内存泄漏"的效果称为"文件资源泄漏";"文件资源泄漏"的本质原因是因为一个进程能打开的文件个数有限,这是一个很严重的问题,一旦出现就会导致程序不能正常工作.
  4. 在windows上默认打开文件的个数是512个,而我们看到的结果确是509个因为一个进程会默认打开三个文件,标椎输入stdin(对应键盘),标准输出stdout(对应显示器),标椎错误stderr(对应显示器).
    (3)读文件fread
    size_t fread (void* ptr,size_t size,size_t count,FILE* stream)
    注: 如果文件读取失败size就会和count不相同.
    (4) 写文件fwrite.
  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值