Yahoo奇摩知識+ 將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+ 網站將會轉為唯讀模式。其他 Yahoo奇摩產品與服務或您的 Yahoo奇摩帳號都不會受影響。如需關於 Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

C語言 如何讀取資料的某一行

請問C語言 如何讀取資料的某一行

我會一次讀取所有資料進來,然後return我指定的行數

但這樣太廢時間了...有辦法一次精準的抓到,不讀取所有資料嗎?

因為我這程式會跑相當多次

謝謝

3 個解答

評分
  • 6 年前
    最佳解答

    如果你的某行是個固定行次n

    那麼

    while(n>0)

    {

    if ( fgets (mystring , 1024 , pFile) == NULL )

    break;

    n--;

    }

    如果你的某行是經過某判斷才得知,則經fgets後做判別則可。

    如果你的某行的動作是很頻繁,那建議做個index以便頻繁讀取。

    例如:先記錄,

    while(1)

    {

    fgetpos (pFile,&pos);

    pFileIndexPos[n++]=pos;

    if ( fgets (mystring , 1024 , pFile) == NULL )

    break;

    }

    maxLine = n;

    使用時用fseek抓取

    void readFileOfLine(char *str,int line)

    {

    if(line +1 <= maxLine) return;//先確保不會超過範圍,當然小於0也要考量,先不打了

    fseek(pFile, pFileIndexPos[line] , SEEK_SET);

    fread(str, 1 , pFileIndexPos[line+1] - pFileIndexPos[line],pFIle);//要注意是否有讀取...

    }

    參考資料:
  • ?
    Lv 6
    6 年前

    the size of BIG data is more than that of physical memory, such as 1000T bytes data.

    how to access this big data in 32bit computer? , It can't whole load into memory. how to search or delete or insert data ?, google uses MAPREDUCE method and B tree index.

    I uses OverlappingB+tree , R tree, Xtree, etc methods to solve big data issue.

    OverlappingB+tree is access range ( 1 - 0x7FFFFFFFFFFFFFF ) records,

    speed : insert about 500 times/per second, delete and search about 800 times/per second, without relation to size of data.

    for examples:

    圖片參考:https://s.yimg.com/rk/AC08187637/o/1355720114.jpg

  • 6 年前

    找工作網

    myjob.tw

還有問題?馬上發問,尋求解答。