文件结构体_finddata_t
c语言中对文件的操作需要用到 _finddata_t ,引用 #include<io.h>
结构体定义如下:
struct _finddata32_t {
unsigned attrib;//文件属性的存储位置
__time32_t time_create;//createtime
__time32_t time_access;//文件最后一次被访问的时间
__time32_t time_write;//文件最后一次被修改的时间
_fsize_t size;//文件的大小(字节数表示)
char name[260];//文件的文件名
};
如何存储到文件结构体中_finddata_t
将文件内容信息读写等操作需要_findfirst()、_findnext()和_fineclose()三个函数的搭配使用
_findfirst()
_findnext()
_fineclose()
查找D盘下ttt.txt文件,并打印出文件名称及文件大小(按字节数表示)代码如下:
//文件及查找
#include<io.h>
#include <iostream>
#include <string.h>
#include <string>
#define ADDR "D://ttt.txt";
const char* SreachAddr=ADDR;
int main(int argc, char** argv) {
__finddata64_t FileInfo;
long Handle=_findfirsti64(SreachAddr,&FileInfo);
if(-1==Handle)
{
return -1;
}
printf("name=%s,size=%d
",FileInfo.name,FileInfo.size);
while(!_findnexti64(Handle,&FileInfo))
{
printf("%s
",FileInfo.name);
}
_findclose(Handle);
system("pause");
return 0;
}
重定位文件位置指针
fseek
函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
fseek函数和lseek函数类似,但lseek返回的是一个off_t数值,而fseek返回的是一个整型。
int fseek(FILE *stream, long offset, int fromwhere);
ftell()
ftell()用来取得文件流目前的读写位置. 参数stream 为已打开的文件指针.
rewind
将文件内部的位置指针重新指向一个流(数据流/文件)的开头
fopen
需要引入 #include <stdio.h>