久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

Hi,歡迎來到嵌入式培訓高端品牌 - 華清遠見教育科技集團<北京總部官網>,專注嵌入式工程師培養15年!
當前位置: > 華清遠見教育科技集團 > 嵌入式學習 > 講師博文 > 文本流和二進制流
文本流和二進制流
時(shi)間(jian):2016-12-30作者:華(hua)清遠見

我們在寫C程序的時候經(jing)常會涉及到(dao)對(dui)流的操作,比如說從標(biao)準(zhun)(zhun)輸(shu)入流讀取一(yi)(yi)串(chuan)字符串(chuan),然后通過標(biao)準(zhun)(zhun)輸(shu)出(chu)流輸(shu)出(chu)顯示在屏幕上,這也(ye)就是所謂(wei)的IO操作。那么流究竟是什么東西?下面(mian)首先對(dui)流這個概念做一(yi)(yi)下解(jie)釋。

一. 流(stream)的概念(nian)

計算機有(you)很多(duo)外部設(she)備(bei),比如(ru)鍵盤(pan)、鼠標、CD-ROM驅動器、硬(ying)盤(pan)、網絡接(jie)口、視頻適配器等(deng)。這些設(she)備(bei)都和IO操(cao)作(zuo)有(you)關(guan)系,而每種設(she)備(bei)都具有(you)不同的特性和操(cao)作(zuo)協議。操(cao)作(zuo)系統負責實現微處(chu)理器和和這些外設(she)的通(tong)信細(xi)節,并向(xiang)應(ying)用開發(fa)程序員提供更(geng)為簡單和統一(yi)的IO接(jie)口,比如(ru)Linux操(cao)作(zuo)系統下的open(),read(),write()等(deng)系統調(diao)用使我們可以以文件(jian)的形式打開并讀寫一(yi)個設(she)備(bei)。

ANSI C進一(yi)步對(dui)IO的(de)(de)概念(nian)進行抽象。就C程序(xu)而(er)言,所有的(de)(de)IO操作只是簡單地從(cong)程序(xu)移(yi)(yi)進或者移(yi)(yi)出(chu)字節(jie),這種字節(jie)流(liu)便(bian)被稱為流(liu)(stream)。程序(xu)員(yuan)只需要關心創建正確的(de)(de)輸出(chu)字節(jie)數(shu)據,以及(ji)正確的(de)(de)解釋從(cong)輸入讀取的(de)(de)字節(jie)數(shu)據,特定IO設備的(de)(de)細節(jie)對(dui)程序(xu)員(yuan)是隱(yin)藏的(de)(de)。

因(yin)此流(liu)(liu)是一個高度(du)抽象(xiang)的概念,它(ta)將數據(ju)的輸(shu)入和輸(shu)出看(kan)作是數據(ju)的流(liu)(liu)入和流(liu)(liu)出,這樣不管是什么IO設(she)備:顯示(shi)器、鍵盤還是硬盤,都被(bei)視為(wei)(wei)同(tong)一種東西。都可以(yi)作為(wei)(wei)流(liu)(liu)的源和目的,對它(ta)們的操作,就是數據(ju)的流(liu)(liu)入和流(liu)(liu)出。

在(zai)C語言中流分(fen)(fen)為(wei)兩種類型:文本流(text stream)和二進(jin)制流(binary stream)。下面分(fen)(fen)別進(jin)行介紹(shao)。

二. 文本流

文(wen)本流是(shi)指在流中(zhong)(zhong)流動的(de)(de)(de)(de)數(shu)(shu)據是(shi)以(yi)字(zi)符的(de)(de)(de)(de)形(xing)式出現的(de)(de)(de)(de)。流中(zhong)(zhong)的(de)(de)(de)(de)每一(yi)個(ge)字(zi)符對(dui)應一(yi)個(ge)字(zi)節,用于存放(fang)(fang)對(dui)應的(de)(de)(de)(de)ASCII碼值,因此文(wen)本流中(zhong)(zhong)的(de)(de)(de)(de)數(shu)(shu)據可以(yi)顯(xian)示(shi)和打印出來,都是(shi)用戶可以(yi)讀懂的(de)(de)(de)(de)信息。比如數(shu)(shu)5678在文(wen)本流中(zhong)(zhong)的(de)(de)(de)(de)存放(fang)(fang)形(xing)式是(shi):

ASCII碼: 00110101 00110110 00110111 00111000
                          ↓     ↓    ↓    ↓
        十進制碼: 5     6    7    8

一共占用(yong)4個字節。

文(wen)(wen)本流(liu)的有些特性(xing)在(zai)不(bu)(bu)同(tong)的系統(tong)中(zhong)(zhong)可能不(bu)(bu)同(tong)。其中(zhong)(zhong)之(zhi)一(yi)(yi)是(shi)文(wen)(wen)本行(xing)的大長(chang)度,標準規定至少允(yun)許(xu)254個(ge)字符(fu)。另一(yi)(yi)個(ge)可能的不(bu)(bu)同(tong)是(shi)文(wen)(wen)本行(xing)的結束方式。例如,在(zai)MS-DOS系統(tong)中(zhong)(zhong),文(wen)(wen)本文(wen)(wen)件約定以(yi)一(yi)(yi)個(ge)回車符(fu)和一(yi)(yi)個(ge)換行(xing)符(fu)(也(ye)叫(jiao)行(xing)反(fan)饋符(fu))結尾,不(bu)(bu)過(guo)UNIX系統(tong)只(zhi)使用一(yi)(yi)個(ge)換行(xing)符(fu)結尾。文(wen)(wen)本流(liu)中(zhong)(zhong)不(bu)(bu)能包含空字符(fu)(即ASCII碼中(zhong)(zhong)的NULL)。

三. 二(er)進制流

二進(jin)制(zhi)流(liu)中的字(zi)節將完全根(gen)據(ju)程(cheng)序編寫它們(men)的形式(shi)寫入(ru)到(dao)文(wen)件(jian)或者設(she)備(bei)中,而且完全根(gen)據(ju)它們(men)從文(wen)件(jian)或者設(she)備(bei)讀取的形式(shi)讀入(ru)到(dao)程(cheng)序中。它們(men)并未做任何改變,這種類型(xing)的流(liu)適(shi)于(yu)非文(wen)本(ben)數據(ju),但是如果你不希(xi)望(wang)IO函數修改文(wen)本(ben)文(wen)件(jian)的行末字(zi)符,也可以把它用于(yu)文(wen)本(ben)文(wen)件(jian)。

二(er)進(jin)制流中的(de)數據是按照二(er)進(jin)制編(bian)碼(ma)的(de)方(fang)式來(lai)存放文件的(de)。比如數5678的(de)二(er)進(jin)制流中的(de)存儲形式為(wei):00010110 00101110只(zhi)占二(er)個(ge)字節(jie)。二(er)進(jin)制數據也(ye)可在屏幕(mu)上顯示, 但其內(nei)容無法讀懂。

二進制流(liu)(liu)(liu)(liu)(liu)比文本流(liu)(liu)(liu)(liu)(liu)更節省空間,且(qie)不用對換行符進行轉換,這樣可以(yi)大(da)大(da)加快流(liu)(liu)(liu)(liu)(liu)的(de)速度,提高(gao)效率,二進制流(liu)(liu)(liu)(liu)(liu)沒有(you)行長度的(de)限制,也可以(yi)包含(han)空字符(NULL)。因此,對于含(han)有(you)大(da)量(liang)數據信息的(de)數字流(liu)(liu)(liu)(liu)(liu),可以(yi)采用二進制流(liu)(liu)(liu)(liu)(liu)的(de)方式;對于含(han)有(you)大(da)量(liang)字符信息的(de)流(liu)(liu)(liu)(liu)(liu),則采用文本流(liu)(liu)(liu)(liu)(liu)的(de)方式。

 
發表評論
評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)