C 怎麼讀取檔案指定的一行或計算出某一行的偏移量。謝謝大家了,這個問題我真被難住了

時間 2022-02-05 12:15:05

1樓:匿名使用者

假如是不規則文字(每行所佔空間不同),那麼在不增加其他索引的情況下,只能根據讀取到的換行個數確定行數。這樣效率勢必低下。

假如對儲存空間的節約要求不高,可以將詞庫檔案格式化(每行所佔空間相同),這樣seek起來會快很多。

c++ 讀檔案如何定位到某一行?

2樓:匿名使用者

c++不支援直接定位到某一行。不過可以通過先定位到檔案開始,然後把之前所有行均讀出的方式,使檔案定位到具體行。

具體**如下:

ifstream & seek_to_line(ifstream & in, int line)

//將開啟的檔案in,定位到line行。

return in;}

3樓:匿名使用者

沒有辦法。除非你一開始載入檔案時,分析共有多少行。做個記錄。不然沒辦法知道

4樓:匿名使用者

由於每一行長度不等,這是沒辦法的,如果可行,那資料庫系統就沒有存在的價值了

5樓:

木好辦法

只能從頭讀,數行數

如果檔案內容不變就好辦了,

建行號->檔案偏移的索引,行號又是連續的,可以省略那檢索就應該非常快了

6樓:匿名使用者

使用seekg()函式。

c++怎麼在txt檔案讀取中一行一行的讀內容

7樓:

#include

char buf[512];

int main()

重定向輸入流命令列: prog

8樓:嫑名字可以嗎

可以使用c++的庫函式getline實現。

getline會生成一個包含一串從輸入流讀入的字元的字串,直到以下情況發生會導致生成的此字串結束。

1)讀到檔案結束符;

2)遇到函式指定的結束符;

3)輸入達到最大限度。

getline有兩種過載:

引數說明:

buffer: 讀取的資料將存在buffer中。

num:最多讀取num個字元。即之前所說的最大限度。

delim:結束符,當遇到指定的結束符時將結束輸入。在第一種過載中,結束符為\n,即遇到換行結束。

所以要實現整行讀取,使用第一種過載就可以了。示例**如下:

#include

using namespace std;

int main()

{char buf[1024];//儲存的buf。

while(getline(buf,sizeof(buf)))//讀取一行。

{cout << "read line:" <

c或c++程式設計從txt檔案中讀取特定行並存入陣列

9樓:匿名使用者

1.用fgets函式可以讀取檔案中某行的資料,某列資料就必須一個一個讀入每行的第幾個字元,再存入到一個字串當中。

2.例程:

#include

#include

void main()

b[k]=0;

printf("第%d行資料:%s\n",i,a);

printf("第%d列資料:%s\n",j,b);

fclose(fp);}

10樓:

1)如果每行長度一致;只讀開始的日期 (只需要年份和月份);採用精確的二分查詢。

2)如果長度大致一致,並且按照日期順序存放,可以大致計算一個位置,使用非精確的二分查詢。

(讀字元直到回車換行)

3)否則 必須 每次讀取一行資料。逐一查詢。

4)不論長度一致還是大概一致,都可以,只讀少量資料,就獲得每行的長度。

a)每行長度一致,只讀一行就可以精確知道,每行的精確長度。

b)每行長度大致一致,讀3到5 行求平均長度,就可以大概知道,每行的長度,不過需要像盲人摸象,那樣獲取所讀行的精確位置。

檔案位置(檔案指標)相關的函式

c:檔案代號: seek, telll,

file *; fseek,ftell;

c++:

ifstream::seekg;ifstream::tellg;

ofstream::seekp;ofstream::tellg;

windows api:

setfilepointer;getfilepointer;

mfc cfile::seek;cfile::seektobengin;cfile::seektoend;

11樓:金色潛鳥

這是給定日期,輸出同年同月資料(存放在2維陣列a[10][31];裡)

程式原理:用fgets()讀入一行,用 sscanf(buf,"%d %d",&y,&m); 讀出年月,若年月滿足需要,則

用 sscanf(buf 。。)讀出10列資料,存入陣列。

#include

#include

int main();

};fclose(fin);

for (j=0;j

return 0;

}如果要找前後10天資料,你可以先計算前後目標日期,用讀得年月日,符合開始日期,沒超過截止日期的行存起來就可以了。你可以模仿上面程式自己寫。

c++裡,讀取一個txt檔案裡的某一行,然後將這一行裡的每一個字串(用空格隔開的)存到陣列裡

12樓:匿名使用者

#include

#include

#include

using namespace std;

#define file_name "file.txt"

void readfile(double arr, int len, int line)

if (len<1 || line <1)

return;

int i = 0, j = 0;

int s = 0;

int h=0,t=0;

string str;

char buf[512];

char *p = null;

ifstream file(file_name, ios::in);

if(!file)

cout <<"error!"

memset(buf,0,512);

file.getline(buf,512);

while(buf[j] != '=')

j++;

while(buf[j] == '='|| buf[j] == ' ')

j++;

p = &buf[j];

str = p;

while(t != -1)

if (s>len-1)

return;

t = str.find(' ', h);

if (t == -1)else if(t == 1)else{

arr[s++] = atof(str.substr(h,t-h).c_str());

h = t+1;

cout << str<

int main()

double a[5];

readfile(a,5,3);

cout

使用說明:一,巨集定義file_name定義要讀的檔案全路徑。二,readline()函式的引數,arr指要存放資料的陣列,len指陣列大小,line指要讀取的行號

親測可用,有不懂的可再問我

滿意請採納。

c語言怎麼讀取txt檔案中一行的資料?

13樓:du錯錯錯

開啟檔案 fopen("需要開啟的路徑")然後使用fgets函式讀取行

#include

#include

#include

#define max_line 1024int main()

while(fgets(buf,max_line,fp) != null)

return 0;}

14樓:普洛智應

ifstream 的 getline 分隔符用行尾,要是有問題等我回到機器那再給你寫幾行。。。

對不起才看到不是c++

15樓:吾好夢中殺豬

在文字檔案模式下,每行的末尾是固定的字元 0d 0a , 這兩個字元標誌著有換行,

其中0d對應ascii碼裡的 回車鍵'\r', 0a對應ascii碼裡的 換行符'\n'

所以,你只要能判斷連續的兩個字元是0d 0a那麼就意味著換行了。

你讀的時候,一次讀到一個大的buffer裡,然後進行字元的比較判斷,過濾出相應的資料。

c++中如何讀取指定檔案中任意行的內容

16樓:匿名使用者

ifstream infile;

infile.open("c://test.txt");   // 開啟檔案

string str;                    // 字串

getline(infile, str, '\n');    // 讀取第一行內容,存入存str中

getline(infile, str, '\n');    // 讀取第二次,第二行內容,存入存str中

getline(infile, str, '\n');    // 讀取第三次,第三行內容,存入存str中

說明一下 \n 是讀取完整的一行

17樓:匿名使用者

1、用fgets函式可以讀取檔案中某行的資料,目的行之前的行直接用gets函式空讀跳過即可,到達目的行之後,讀取再存入到一個字串當中。

2、例程:

#include

#include

void main()

b[k]=0;

printf("第%d行資料:%s\n",i,a);

printf("第%d列資料:%s\n",j,b);

fclose(fp);}

18樓:飛瑤小饕餮

你是要取出第三行的內容嗎?只能一行行讀,讀到第三行時取出來就是了

還是說你要找哪行出現指定字串取出那行資訊啊。那也是一行行讀啊,然後進行字串匹配

19樓:匿名使用者

1、每一行內容都以結構體存進去,開啟檔案後通過結構體長度調檔案指標位置

2、通過遍歷來實現,找『\n』來定行

20樓:匿名使用者

普通文字沒法快速實現,只有自定義的格式可以,先儲存行索引。然後只需要讀取行索引頭然後再根據索引頭快速定位到任意行。

沒有初始化索引頭的檔案,可以在第一次讀取時候先另外建立一個索引檔案,以後讀取就快了

運用C 如何讀取一行字串的指定字元

泡影果果 從檔案中讀取資料,一行一行的讀取,用getline include fstream in cstring strfilename e 測試 a.txt 路徑是雙斜槓 in.open strfilename,ios in ios base in while in.eof 如果沒有讀到檔案結尾...

c怎麼遍歷讀取一行一行的文字,C 怎麼遍歷讀取一行一行的TXT文字?

foreach string str in system.io.file.readalllines d 123.txt encoding.default c 如何一行一行的讀取txt文字 每讀取一行內容 就把這一行的內容寫入一個字串陣列 插!答得好?答得好,你壓根就看不懂,有啥用?自個慢慢找資料解決...

C語言如何讀取一行資料,以空格分開

會飛的小兔子 可以使用strtok函式做分割單詞。include voidmain chars 192.168.0.26 char delim char p printf s strtok s,delim while p strtok null,delim printf s p printf n 擴...