weidagang2046的專欄

          物格而后知致
          隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
          數據加載中……

          C語言學習進程:fseek與ftell函數

          fseek函數是 用來設定文件的當前讀寫位置.

          函數原型: int fseek(FILE *fp,long offset,int origin);

          函數功能:把fp的文件讀寫位置指針移到指定的位置.

          fseek(fp,20,SEEK_SET); 意思是把fp文件讀寫位置指針從文件開始后移20個字節.



          ftell函數是用來獲取文件的當前讀寫位置;

          函數原型: long ftell(FILE *fp)

          函數功能:得到流式文件的當前讀寫位置,其返回值是當前讀寫位置偏離文件頭部的字節數.

          ban=ftell(fp); 是獲取fp指定的文件的當前讀寫位置,并將其值傳給變量ban.



          fseek函數與ftell函數綜合應用:

          分析:可以用fseek函數把位置指針移到文件尾,再用ftell函數獲得這時位置指針距文件頭的字節數,這個字節數就是文件的長度.

          #include <stdio.h>
          
          main()
          
          {
          
             FILE *fp;
          
             char filename[80];
          
             long length;
          
             printf("輸入文件名:");
          
             gets(filename);
          
             //以二進制讀文件方式打開文件
          
             fp=fopen(filename,"rb");
          
             if(fp==NULL)
          
                printf("file not found!\n");
          
             else
          
                {
          
                   //把文件的位置指針移到文件尾
          
                    fseek(fp,OL,SEEK_END);
          
                   //獲取文件長度;
          
                    length=ftell(fp);
          
                    printf("該文件的長度為%1d字節\n",length);
          
                    fclose(fp);
          
                }
          
          }


          from: http://my.opera.com/lau_jia/blog/show.dml/380421

          posted on 2007-01-05 10:46 weidagang2046 閱讀(35115) 評論(7)  編輯  收藏 所屬分類: C/C++

          評論

          # re: C語言學習進程:fseek與ftell函數[未登錄]  回復  更多評論   

          牛人就是不一樣
          2008-02-02 11:31 | 流浪者

          # re: C語言學習進程:fseek與ftell函數  回復  更多評論   

          學習,在于多思考!其實每個人都是有潛能的。。。
          2008-08-10 23:52 | 路過者

          # re: C語言學習進程:fseek與ftell函數  回復  更多評論   

          OL 是什么?。。。?!
          2008-10-04 17:06 | 頂頂頂

          # re: C語言學習進程:fseek與ftell函數  回復  更多評論   

          樓上問0L什么意思,其中“0”是零,別理解成字母“O”了,整體意思就是說將位置指針移動到離文件末尾的0個字節處
          例如:feek(fp,100L,0);將位置指針移動到離文件開頭的100個字節處
          feek(fp,50L,1);將位置指針移動到當前位置的50個字節處
          feek(fp,-10L,2);將位置指針從文件末尾處向后退10個字節
          (其中0代表文件開始SEEK-SET,1代表文件當前位置SEEK-CUR,2代表文件末尾SEEK-END)
          2008-10-16 11:10 | 亮哥哥

          # re: C語言學習進程:fseek與ftell函數  回復  更多評論   

          fseek(fp,0,SEEK_END);
          length=ftell(fp);

          vector<char> buff[length];
          ret = fread(&buff[0], length, 1, fp);

          這么讀,ret和lengthf總是不等,相差挺大的,請問是為什么?
          email: shark926@sina.com
          2008-11-03 18:47 | 朱江波

          # re: C語言學習進程:fseek與ftell函數  回復  更多評論   

          @朱江波
          因為你length=ftell(fp); 之后

          還需要把句柄fseek(fp,0,SEEK_START);
          2009-01-16 15:39 | 文文

          # re: C語言學習進程:fseek與ftell函數  回復  更多評論   

          fseek(fp, FSEEK_SET, FSEEK_END);
          file_len = ftell(fp);

          這樣不就可以獲取文件大小了嘛,當前文件指針還在文件開頭
          2009-10-10 13:49 | Yi Ling
          主站蜘蛛池模板: 喜德县| 铜鼓县| 民丰县| 镇巴县| 遂昌县| 赤峰市| 腾冲县| 延庆县| 南江县| 前郭尔| 泸定县| 白银市| 洛宁县| 新野县| 天门市| 信宜市| 疏附县| 白银市| 嵩明县| 岗巴县| 横山县| 镇平县| 襄城县| 车致| 略阳县| 伊川县| 崇文区| 韶关市| 余姚市| 阿拉尔市| 三门峡市| 新建县| 舟曲县| 重庆市| 镇赉县| 桃江县| 炉霍县| 天峻县| 南昌市| 厦门市| 乳山市|