国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

C語言程序設(shè)計(jì)中數(shù)據(jù)文件處理技巧

2012-11-15 06:46李國忠楊艷
中國科技信息 2012年9期
關(guān)鍵詞:數(shù)據(jù)文件C語言程序設(shè)計(jì)

李國忠 楊艷

江西工業(yè)工程職業(yè)技術(shù)學(xué)院,江西 萍鄉(xiāng) 337055

C語言程序設(shè)計(jì)中數(shù)據(jù)文件處理技巧

李國忠 楊艷

江西工業(yè)工程職業(yè)技術(shù)學(xué)院,江西 萍鄉(xiāng) 337055

數(shù)據(jù)文件處理是C語言教學(xué)過程中必不可少的一個(gè)教學(xué)單元。在C語言課程設(shè)計(jì)任務(wù)中通常離不開對數(shù)據(jù)文件進(jìn)行處理,如記錄的追加、統(tǒng)計(jì)、刪除及修改等。本文擬通過數(shù)據(jù)文件處理的巧妙算法的介紹,讓學(xué)生在做C語言課程設(shè)計(jì)時(shí)加深對數(shù)據(jù)文件及算法的認(rèn)識,做到事半功倍。

文件處理;記錄;巧妙算法

引言

C語言是目前世界上流行、使用最廣泛的高級程序設(shè)計(jì)語言。對操作系統(tǒng)和系統(tǒng)使用程序以及需要對硬件進(jìn)行操作的場合,用C語言明顯優(yōu)于其它高級語言,許多大型應(yīng)用軟件都是用C語言編寫的。在眾多的程序設(shè)計(jì)語言中, C 語言以其靈活性和實(shí)用性受到了廣大計(jì)算機(jī)應(yīng)用人員的喜愛。一旦掌握了C 語言,就可以較為輕松地學(xué)習(xí)其他任何一種程序設(shè)計(jì)語言,為學(xué)習(xí)后續(xù)的面向?qū)ο蟪绦蛟O(shè)計(jì)打下基礎(chǔ)。

《C語言程序設(shè)計(jì)》是我院面向理工類各專業(yè)學(xué)生開設(shè)的,旨在培養(yǎng)學(xué)生基本程序設(shè)計(jì)思想和程序設(shè)計(jì)能力的學(xué)科基礎(chǔ)必修課。通過《C語言程序設(shè)計(jì)》課程的學(xué)習(xí),培養(yǎng)學(xué)生的邏輯思維能力,掌握基本的面向過程的程序設(shè)計(jì)方法,扎實(shí)提高學(xué)生的動手實(shí)踐能力,為下一步學(xué)習(xí)面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù)和其他重要后繼課程的學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。

1 文件處理分析

文件實(shí)際上就是記載在外部存儲器上的數(shù)據(jù)的集合,在C語言中把這些數(shù)據(jù)的集合看成是字符或字節(jié)序列,亦即由一個(gè)一個(gè)的字符或字節(jié)的數(shù)據(jù)順序組成,換句話說,C語言是把每一個(gè)文件都看成是一個(gè)有序的字節(jié)流。

文件操作是C語言教學(xué)過程中必不可少而學(xué)生又難掌握的一個(gè)教學(xué)單元。在C語言程序設(shè)計(jì)中對數(shù)據(jù)文件的操作主要包括文件的打開、讀取、寫入、關(guān)閉。具體地說就是對記錄的插入、刪除、修改、排序等操作,對記錄的處理都涉及記錄的保存和記錄數(shù)的統(tǒng)計(jì),然而C語言本身并沒有直接提供對記錄計(jì)數(shù)和記錄保存的函數(shù),這就需要程序員自己開發(fā)編寫。

2 文件處理技巧

下面的C語言程序中就數(shù)據(jù)文件中記錄保存、記錄自動排序和記錄計(jì)數(shù)三個(gè)重要功能的實(shí)現(xiàn)分別設(shè)計(jì)了一個(gè)巧妙的算法。具體代碼如下:

該程序通過關(guān)鍵語句fseek(fp,(kh[i].ID-1)*rec_len,0);實(shí)現(xiàn)了記錄數(shù)據(jù)的自動排序,如圖1所示。

圖1 記錄自動排序

實(shí)現(xiàn)該功能的核心算法是根據(jù)賬號的大小來移動文件指針的位置,正如圖2、圖3和圖4所示,文件指針每次的偏移量都是不同的。

圖2 第一次輸入時(shí)數(shù)據(jù)文件的存儲狀況

圖3 第二次輸入時(shí)數(shù)據(jù)文件的存儲狀況

圖4 第三次輸入時(shí)數(shù)據(jù)文件的存儲狀況

該算法的缺點(diǎn)是可能會在數(shù)據(jù)文件中生成一些空記錄,這可以通過save()函數(shù)來彌補(bǔ),save()函數(shù)具有清除空記錄的功能,如圖5所示。當(dāng)然在記錄的刪除、修改、追加操作中都能用到save()函數(shù)。在程序中由rec()函數(shù)實(shí)現(xiàn)記錄數(shù)的統(tǒng)計(jì)。在rec()函數(shù)中若把語句if(fread(&kh[i],sizeof(struct K H X X),1,f p)!=N U L L)改寫為fread(&kh[i],sizeof(struct KHXX),1,fp)則記錄數(shù)會比實(shí)際數(shù)目大1,這是因?yàn)槲募羔樤谧x取完最后一條記錄后,還會嘗試再取一次數(shù)據(jù),這樣使循環(huán)次數(shù)多了一次,因此需要增加計(jì)數(shù)條件。

圖5 save()函數(shù)清除空記錄

3 文件處理技巧的應(yīng)用

C語言是各級各類學(xué)校教學(xué)體系中的一門計(jì)算機(jī)語言教學(xué)必修課,C語言課程設(shè)計(jì)是在C語言課堂教學(xué)和實(shí)驗(yàn)教學(xué)基礎(chǔ)上的一項(xiàng)課程設(shè)計(jì)任務(wù),其目的是鞏固教學(xué)成果,擴(kuò)充 教學(xué)內(nèi)容,提高教學(xué)質(zhì)量。在課程設(shè)計(jì)任務(wù)中少不了要對數(shù)據(jù)文件進(jìn)行操作,如記錄的追加、記錄的統(tǒng)計(jì)、記錄的刪除、記錄的修改等等。對大多數(shù)學(xué)生來說算法和邏輯概念是比較薄弱的,如果在課程設(shè)計(jì)中能恰當(dāng)?shù)貞?yīng)用到本文所述的記錄自動排序、記錄保存及記錄計(jì)數(shù)等算法,那么學(xué)生在完成任務(wù)時(shí)就能少走彎路,做到事半功倍。

[1] 李麗娟.C語言程序設(shè)計(jì)教程{M}.北京:人民郵電出版社,2009

[2] 張友珍.C語言課程設(shè)計(jì)的教學(xué)實(shí)踐{J}.合肥聯(lián)合大學(xué)學(xué)報(bào),2001(3)

10.3969/j.issn.1001-8972.2012.09.046

李國忠(男),楊艷(女),江西萍鄉(xiāng)人,電子計(jì)算機(jī)系講師。

猜你喜歡
數(shù)據(jù)文件C語言程序設(shè)計(jì)
醫(yī)學(xué)專業(yè)“Python程序設(shè)計(jì)”課程教學(xué)改革總結(jié)與思考
基于Visual Studio Code的C語言程序設(shè)計(jì)實(shí)踐教學(xué)探索
51單片機(jī)C語言入門方法
從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
基于C語言的計(jì)算機(jī)軟件編程
基于表空間和數(shù)據(jù)文件探討MIS中數(shù)據(jù)庫架構(gòu)設(shè)計(jì)
高職高專院校C語言程序設(shè)計(jì)教學(xué)改革探索
基于網(wǎng)絡(luò)環(huán)境的社區(qū)協(xié)同辦公問題探討(二)
氣象數(shù)據(jù)文件異機(jī)備份程序淺析