郭建軍
(長治學院 數學系,山西 長治 046011)
隨著計算機硬件、軟件的不斷發(fā)展,計算機數據處理技術經歷了人工管理、文件管理、數據庫管理三個主要階段。當今應用最廣泛的數據處理技術是數據庫管理,這使得許多語言處理系統(tǒng)中都有基于數據庫編程的內容。例如VC++6.0中就有ODBC(Open Database Connectivity) 數據庫編程、ADO(ActiveX Data Object)數據庫編程,通過ODBC和ADO在VC++6.0語言中可訪問外部數據中的自由表[1]213-216。其實每一種語言處理程序中都有自身的文件系統(tǒng),這就是數據處理中的文件管理。在學習C語言程序設計的過程中,由于進度安排等相關因素的影響,使得文件操作的相關內容無法完整加以學習。文章通過對C語言文件的操作及應用的介紹,希望引起對文件操作內容學習的重視和研究。
文件是各種語言環(huán)境中最重要的內容。在C語言程序設計中提供了一定的文件類型,以及對文件的操作。通過對文件類型的了解和對文件操作命令的使用,可靈活地對文件進行處理。
在計算機系統(tǒng)中,文件分類的方法有很多。在C語言系統(tǒng)中對文件的分類可按輸入和輸出方式和存放在存儲介質的形式來分類。
(1)按輸入輸出方式分類,可分為順序存取文件和直接存取文件[2]214-215。順序存取文件的特點是:當“打開”這種類型文件,進行讀或寫操作時,總是從文件的開始進行讀或寫。直接存取文件的特點是:當“打開”這種類型文件,進行讀或寫時,可調用C語言的庫函數指定開始讀或寫的字節(jié)號,然后直接對此位置上的數據進行讀,或把數據寫到此位置上。
(2)按存放在存儲介質上形式分類,可分為文本文件和二進制文件[2]214-215。文本文件的特點是:按文件內容字符的ASCII形式存儲在磁盤介質上,這種類型的文件,用Windows下的記事本可直接打開,也可直接輸出到終端屏幕。二進制文件的特點是:文件中的數據是按二進制形式存儲在磁盤介質上,數據類要決定字節(jié)大小,且存儲時無法轉變。這種類型的文件不能直接輸出到終端屏幕,但輸入、輸出時由于不轉換,所以速度快。
C語言中文件的操作是通過定義一個特殊的變量——文件類型指針變量來實現,當由FILE說明符定義了文件類型指針變量后,運用fopen()命令,可賦給文件類型指針變量打開文件的文件名,運用fclose()可關閉打開的文件。
對打開文件命令fopen()中的參數做出選擇,可控制文件的使用方式,控制的方式有:“讀”、“寫”、“讀寫”、“二進形式”、“添加數據”。
例如:若定義了一個文件類型指針變量fp,則以下命令:
fp=fopen("c:\abc.txt","r");
解釋為:用只讀方式打開了C盤根目錄下文件名為abc.txt的文件,這種方式打開的文件,在使用時只能讀取文件中的內容。
在C語言程序設計過程中,程序執(zhí)行的結果是否正確,是通過程序調試實現的。而在調試過程中,當輸入一次原始數據后,程序執(zhí)行有錯需要改錯,改錯后再調試,還需再輸入一次原始數據進行調試。這個調試過程對于輸入數據量少的程序來說還行,但對于輸入原始數據量大的程序來說,上述過程就比較煩瑣,而且數據是相同,只是重復地輸入。
通過調用文件的原始數據,可避免在程序反復調試過程中重復輸入數據,既保證數據的正確,又使輸入過程變得簡單。
在C程序設計時,如果程序中涉及數組變量和結構體變量,程序調試時輸入的數據量相對比較大。以文件給二維數組變量提供輸入數據為例,文件格式及程序段如下。
先在記事本下輸入二維數組的數據元素,輸入形式是行列形式,每個數據之間用逗號分開,每行的最后的數也必須有逗號,并用相應的文件名存盤。
輸入數據的程序段如下:
以上程序段,只需改變預定義中的M和N及文件abc.txt中的內容,即可為任意行列的二維數組輸入數據。
程序調試正確。運行后輸出的結果,如果用一般的輸出方式,只能是在輸出屏幕上顯示一次,當下一次程序運行后再輸出結果后,上一次的輸出結果就消失了。當某些輸出結果有一定作用,而又想繼續(xù)使用時,就顯得極為不方便。如利用文件操作,保存程序運行的結果,就能解決這個問題。
程序運行結果輸出到文件的程序段:
以上程序段把100至1000之間的素數存入到文件名為prime.txt的文件中,每行10個數據,通過該文件可查看素數的分布情況。
由于程序處理數據的類型不同,輸出的數據類型和命令也不同,只需根據輸出數據的類型,改變輸出命令的格式即可,但在建立輸入數據文件時,不能用二進制方式創(chuàng)建文件。
在設計計算機輔助C程序設計測試系統(tǒng)時,如果要對考生所做的答案進行計算機自動評分,對于客觀題型選擇題、填空題、判斷題的評分是比較容易的,但對程序設計題型的自動評分就相對難了。主要是程序設計方法比較靈活性,不可能用統(tǒng)一的一個標準程序來評判學生所編寫的程序。但不管設計出什么形式的程序,程序的執(zhí)行結果總是惟一的。利用程序執(zhí)行結果的惟一性,通過對學生程序輸出到文件的結果和老師考試前準備的程序輸出結果的文件進行比較,可完成程序設計的自動評分。這種評分的不足是,少了過程分,只注重結果。為了保證設計的程序具有通用性,可設置一些參數,通過變化參數來驗證程序的通用性。兩個文件比較的程序:
以上程序只是二個普通的字符文件的比較,如果程序輸出數據類型復雜,則還需要對程序中相應的語句進行修改。
C語言程序中文件的應用還很多,特別是程序調試時需要的特殊數據形式。例如:在為存儲復雜結構二叉樹、圖等程序提供輸入數據時,數據文件格式的組織,數據文件讀取的命令,都需要進行詳細設計。C語言程序中文件的應用還有許多內容需要去開發(fā)和探索,這樣才能更加體現程序設計的作用和魅力。
[1]顏盟盟. Visual C++ 從入門到精通[M].第1版.北京:化學工業(yè)出版社,2009-08.213-216.
[2]田淑清.全計算機等級考試二級教程-C 語言程序設計[M].第1 版.北京:高等教育出版社,2013-05.214-215.