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\n",FileInfo.name,FileInfo.size);
    
    while(!_findnexti64(Handle,&FileInfo))
    {
        printf("%s\n",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>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章