zoukankan      html  css  js  c++  java
  • 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>


  • 相关阅读:
    初心
    [CSP-S2019]:赛后总结
    最帅的快读
    检讨书模板
    $Linux$系统$GEDIT$编译运行$C++$和各种乱搞
    [CSP-S模拟测试]:C(倍增+数学)
    [CSP-S模拟测试]:B(期望DP)
    [CSP-S模拟测试]:A(单调栈维护凸包+二分答案)
    [NOIP2018]:旅行(数据加强版)(基环树+搜索+乱搞)
    [JZOJ6347]:ZYB玩字符串(DP+记忆化搜索)
  • 原文地址:https://www.cnblogs.com/falcon-fei/p/11060179.html
Copyright © 2011-2022 走看看