C语言文件读写

文件结构体_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>


原文地址:https://www.cnblogs.com/falcon-fei/p/11060179.html