文件結構體_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>