<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 5.C語言文件的隨機讀寫 前面介紹的對文件的讀寫方式都是順序讀寫,即讀寫文件只能從頭開始,順序讀寫各個數據。但在實際問題中常要求只讀寫文件中某一指定的部分。為了解決這個問題可移動文件內部的位置指針到需要讀寫的位置,再進行讀寫,這種讀寫稱為隨機讀寫。 實現隨機讀寫的關鍵是要按要求移動位置指針,這稱為文件的定位。 ## 文件定位 移動文件內部位置指針的函數主要有兩個,即rewind()和fseek()。 rewind函數前面已多次使用過,其調用形式為: ??? rewind(文件指針); 它的功能是把文件內部的位置指針移到文件首。 下面主要介紹fseek函數。fseek函數用來移動文件內部位置指針,其調用形式為: ??? fseek(文件指針,位移量,起始點); 其中: * “文件指針”指向被移動的文件。 * “位移量”表示移動的字節數,要求位移量是long型數據,以便在文件長度大于64KB 時不會出錯。當用常量表示位移量時,要求加后綴“L”。 * “起始點”表示從何處開始計算位移量,規定的起始點有三種:文件首,當前位置和文件尾。 其表示方法如下表: | 起始點 | 表示符號 | 數字表示 | |---|---|---| | 文件首 | SEEK_SET | 0 | | 當前位置 | SEEK_CUR | 1 | | 文件末尾 | SEEK_END | 2 | 例如: ? ? fseek(fp,100L,0); 其意義是把位置指針移到離文件首100個字節處。 還要說明的是fseek函數一般用于二進制文件。在文本文件中由于要進行轉換,故往往計算的位置會出現錯誤。 ## 文件的隨機讀寫 在移動位置指針之后,即可用前面介紹的任一種讀寫函數進行讀寫。由于一般是讀寫一個數據據塊,因此常用fread和fwrite函數。下面用例題來說明文件的隨機讀寫。 【例13-8】在學生文件stu_list中讀出第二個學生的數據。 ~~~ #include<stdio.h> struct stu{ char name[10]; int num; int age; char addr[15]; }boy,*qq; main(){ FILE *fp; char ch; int i=1; qq=&boy; if((fp=fopen("stu_list","rb"))==NULL){ printf("Cannot open file strike any key exit!"); getch(); exit(1); } rewind(fp); fseek(fp,i*sizeof(struct stu),0); fread(qq,sizeof(struct stu),1,fp); printf("\n\nname\tnumber age addr\n"); printf("%s\t%5d %7d %s\n",qq->name,qq->num,qq->age,qq->addr); } ~~~ 文件stu_list已由【例13-6】的程序建立,本程序用隨機讀出的方法讀出第二個學生的數據。程序中定義boy為stu類型變量,qq為指向boy的指針。以讀二進制文件方式打開文件,程序第19行移動文件位置指針。其中的i值為1,表示從文件頭開始,移動一個stu類型的長度,然后再讀出的數據即為第二個學生的數據。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看