程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C語言文件操作解析(四)

C語言文件操作解析(四)

編輯:關於C

在文件操作中除了打開操作以及讀寫操作,還有幾種比較常見的操作。下面介紹一下這些操作中涉及到的函數。

一.移動位置指針的函數

   rewind函數和fseek函數,這兩個函數的原型是:

   void rewind(FILE *fp);     將位置指針移動到文件首

  int fseek(FILE *fp,long int offset,int origin);   將位置指針移動到距離origin的offset字節數的位置

  其中對於fseek函數中的參數,origin為起始點,offset為距離origin的偏移字節數

 origin的值有三個:SEEK_SET(0)—>文件首,SEEK_CUR(1)—>當前位置,SEEK_END(2)—>文件尾。

注意:1)若文件是以追加方式打開,則當進行寫操作時,這兩個函數是不起作用的,無論將位置指針移動哪個位置,始終將添加的數據追加到文件末尾。

 

二.其他常用函數

1.ftell函數

long int ftell(FILE *fp);

計算當前位置指針距文件首的字節數,若出錯,則返回-1L。

利用ftell函數可以計算出文件的大小。

2.feof函數

int feof(FILE *fp);

檢測當前位置指針是否到達文件末尾,若到達文件末尾,則返回一個非零值,否則返回0。

3.ferror函數

int ferror(FILE *fp);

檢測文件操作過程中是否出錯,若出錯,則返回一個非零值,否則返回0

4.remove函數

int remove(const char *filename);

刪除文件,若刪除成功,則返回0,否則返回非零值

5.rename函數

int rename(const char *oldname,const char *newname);

將文件重命名,重命名成功則返回0,否則返回非零值。

6.freopen函數

FILE* freopen(const char *filename,const char *mode,FILE *stream);

實現重定向輸入輸出。此函數在測試數據時用得比較多。

7.fclose函數

int fclose(FILE *stream);

關閉一個流,若成功,則返回0,否則返回-1.注意每次對文件操作完之後需關閉流,否則可能會造成數據丟失。

測試程序:

	#include<stdio.h>
#include<stdlib.h>

int main(void)
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w+",stdout);
    int i;
    int a[10];
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<10;i++)
    {
        printf("%d\n",a[i]);
    }
    return 0;
}

假設工程目錄下已經存在input.txt,文件中的數據為1 2 -1 3 4 5 7 8 9 10,則運行之後,不需要從控制台輸入數據,程序直接從input.txt中讀取數據,然後將結果輸出到output.txt中,不直接向控制台輸出結果。

 作者:海 子

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved