fread fseek 耗時問題

2021-08-04 04:03:23 字數 1798 閱讀 5231

fseek

原型:int fseek(file *stream, long offset, int fromwhere);

功能:重定位流(資料流/檔案)上的檔案內部位置指標

注意:不是定位檔案指標(檔案指標是 file * fp 這樣的),檔案指標指向檔案/流。位置指標指向檔案內部的位元組位置,隨著檔案的讀取會移動,檔案指標如果不重新賦值將不會改變指向別的檔案。

函式設定檔案指標stream的位置。如果執行成功,stream將指向以fromwhere(偏移起始位置:檔案頭(seek_set)0,當前位置(seek_cur)1,檔案尾(seek_end)2)為基準,偏移offset(指標偏移量)個位元組的位置。如果執行失敗(比如offset超過檔案自身大小),則不改變stream指向的位置。

返回值:成功,返回0,失敗返回-1,並設定errno的值,可以用perror()函式輸出錯誤。

第乙個引數stream為檔案指標

第二個引數offset為偏移量,正數表示正向偏移,負數表示負向偏移

第三個引數origin設定從檔案的**開始偏移,可能取值為:seek_cur、 seek_end 或 seek_set

seek_set: 檔案開頭

seek_cur: 當前位置

seek_end: 檔案結尾

其中seek_set,seek_cur和seek_end依次為0,1和2.

簡言之:

fseek(fp,100l,0);把檔案內部指標移動到離檔案開頭100位元組處;

fseek(fp,100l,1);把檔案內部指標移動到離檔案當前位置100位元組處;

fseek(fp,-100l,2);把檔案內部指標退回到離檔案結尾100位元組處。

fread的功 能: 從乙個流中讀資料

fread 在使用過程中,首先由 file 確定乙個檔案指標 fp,fp 通過 fopen 將物件確定,fread此時對檔案的操作是 檔案內部位置指標移動乙個位元組再讀取乙個位元組

函式原型: size_t fread( void * buffer , size_t size , size_t count , file * stream );

參 數:

1.用於接收資料的位址(指標)(buffer )

2.單個元素的大小(size) :單位是位元組而不是位,例如讀取乙個整型數就是2個位元組

3.元素個數(count )

4.提供資料的檔案指標(stream)

返回值:

(1)成功時返回實際讀入的元素個數

(2)若檔案達到末尾,則返回0

(3)出錯時,返回-1

c語言檔案操作 fread ,fseek

1.fread fread的功 能 從乙個流中讀資料 可以指定個數 fread 在使用過程中,首先由 file 確定乙個檔案指標 fp,fp 通過 fopen 將物件確定,fread此時對檔案的操作是檔案內部位置指標移動乙個位元組再讀取乙個位元組 注意的是 1.fread 函式是有返回值的 返回值 ...

mysql查詢耗時 mysql查詢耗時太長

好夥計 在你的幫助下我們有乙個解決方案 見 但我仍然有乙個問題 我改變了表來新增索引 alter table users add fulltext username alter table table 1 add fulltext field abc field def alter table ta...

計算執行耗時

程式的版權和版本宣告部分 檔名稱 test.cpp 作 者 初瑞 完成日期 2013 年 11 月 12 日 版 本 號 v1.0 對任務及求解方法的描述部分 輸入描述 無 問題描述 計算執行時間 程式輸出 問題分析 略 演算法設計 略 1 include include using namespa...