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);
以下是一些关于文件操作时候文件属性相关内容
- 操作文本文件
" r "(只读):为了输入数据,打开一个已经存在的文本文件.
" w "(只写):为了输出数据,打开一个文本文件.
" a "(追加):向文本文件尾添加数据.
" r+ "(读写):为了读和写,打开一个文本文件.
" w+ “(读写):为了读和写,建一个新的文件.
" a+”(读写):打开一个文件,在文件尾进行读写.
注:使用"w"方式打开会先清空原来内容,"a"方式打开不会影响原来内容,会在旧内容后面新增新内容. - 操作二进制文件
" rb "(只读):为了输入数据,打开一个二进制文件.
" wb "(只写):为了输出数据,打开一个二进制文件.
" ab "(追加):向一个二进制文件尾添加数据.
" rb+ "(读写):为了读和写,打开一个二进制文件.
" wb+ "(读写):为了读和写,新建一个二进制文件.
" ab+ "(读写):打开一个二进制文件,在文件尾进行读和写.
<2> 打开文件时可以使用errno来检查打开成功还是失败,errno是0就是成功,非0就是不成功,不同的errno值表示不同的出错原因,可以通过搜索引擎查到具体的原因这个方式比较麻烦,更简单的办法就是可以使用strerror这个函数.
(2) 关闭文件fclose - 一旦打开文件就需要用fclose关闭文件,否则就会出现类似"内存泄漏"的效果称为"文件资源泄漏";"文件资源泄漏"的本质原因是因为一个进程能打开的文件个数有限,这是一个很严重的问题,一旦出现就会导致程序不能正常工作.
- 在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.