亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C++二進制文件讀取時怎么定位

C++二進制文件讀取時怎么定位

C++
慕姐8265434 2019-05-25 15:14:43
C++二進制文件讀取時怎么定位
查看完整描述

2 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

樓主可知道有個函數叫做 fseek ?

1int fseek(FILE * stream, long offset, int fromwhere); // in stdio.h/cstdio

參數stream為文件指針,offset為偏移量,fromwhere為指針的起始位置。

參數 offset 為根據參數 fromwhere 來移動讀寫位置的位移數。參數 fromwhere 為下列其中一種:

SEEK_SET:從距文件開頭 offset 位移量為新的讀寫位置;

SEEK_CUR:以目前的讀寫位置往后增加 offset 個位移量;

SEEK_END:將讀寫位置指向文件尾后再增加 offset 個位移量。

當 fromwhere 為 SEEK_CUR 或 SEEK_END 時,參數 offset 允許負值的出現。對于以二進制方式打開的文件流,移動后的位置為 fromwhere + offset。

【返回值】成功返回 0,否則返回非 0 值。如果發生讀寫錯誤,將會設置設置文件錯誤標識。

如果為重定向,請在 stream 處填寫stdin 。




查看完整回答
反對 回復 2019-05-26
?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

C++不支持直接定位到某一行。不過可以通過先定位到文件開始,然后把之前所有行均讀出的方式,使文件定位到具體行。

具體代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

ifstream & seek_to_line(ifstream & in, int line)

//將打開的文件in,定位到line行。

{

    int i;

    char buf[1024];

    in.seekg(0, ios::beg);  //定位到文件開始。

    for(i = 0; i < line; i ++)

    {

        in.getline(buf, sizeof(buf));//讀取行。

    }

    return in;

}


 

 




查看完整回答
反對 回復 2019-05-26
  • 2 回答
  • 0 關注
  • 783 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號