搜尋
首頁常見問題c語言可以處理的檔案類型是什麼

c語言可以處理的檔案類型是:文字檔案和二進位檔案。 C語言所能夠處理文件是按照存放形式分為文本文件和二進位文件:1、文本文件存儲的是一個ASCII碼,文件的內容可以直接進行輸入輸出;2、二進製文件直接將字符存儲,不能將二進制文件的內容直接輸出到螢幕上。

c語言可以處理的檔案類型是什麼

本教學操作環境:windows7系統、c99版本、Dell G3電腦。

在電腦中,對於輸入輸出皆採用資料流的形式。文件依照存取方式分為順序存取文件和隨機存取文件。依照儲存形式分為二進位檔案和文字檔案。文字檔案儲存的是一個ASCII碼,檔案的內容可以直接進行輸入輸出。二進位檔案直接將字元儲存,不能將二進位檔案的內容直接輸出到螢幕上。所以,C語言所能夠處理文件是依照存放形式分為文字檔和二進位。

文字檔案和二進位檔案的區別

文字檔案通常用來保存肉眼可見的字符,例如.txt檔案、.c檔案、.dat文件等,用文字編輯器開啟這些文件,我們能夠順利看懂文件的內容。

二進位檔案通常用來保存影片、圖片、程式等不可閱讀的內容,用文字編輯器開啟這些文件,會看到一堆亂碼,根本看不懂。

但是從物理上講,二進位和字元檔案並沒有什麼區別,它們都是以二進位的形式保存在磁碟上的資料。

我們之所以能看懂文字檔案的內容,是因為文字檔案中採用的是ASCII、UTF-8、GBK 等字元編碼,文字編輯器可以辨識出這些編碼格式,並將編碼值轉換成字符展示出來。

而二進位檔案使用的是mp4、gif、exe 等特殊編碼格式,文字編輯器並不認識這些編碼格式,只能按照字元編碼格式胡亂解析,所以就成了一堆亂七八糟的字符,有的甚至都沒見過。

如果我們新建一個 mp4 文件,給它寫入一串字符,然後再用文本編輯器打開,你一樣可以讀得懂,有興趣的讀者可以自己試試。

總起來說,不同類型的檔案有不同的編碼格式,必須使用對應的程式(軟體)才能正確解析,否則就是一堆亂碼,或是無法使用。

對於程式設計人員,文字檔案和二進位檔案就是一個聲明,指明了你應該以什麼方式(文字方式/二進位)開啟這個文件,用什麼函數讀寫這個檔案(讀寫函數),怎麼判斷讀到這個文件結尾。

具體的說:

1。以哪種方式開啟一個文件?

ANSI C規定了標準輸入輸出函數函式庫,用 fopen()函數開啟檔案。 fopen()函數的呼叫方式一般為:

FILE *fp;
fp=fopen(文件名,使用文件方式);

使用檔案方式見下表:

使用檔案方式

含義

"r"(只讀)

為輸入開啟一個文本文件

"w"(只寫)

#為輸出開啟一個文字檔

#"a"(追加)

#為追加開啟一個文字檔案

"rb"(唯讀)

為輸入開啟一個二進位檔案

"wb" (只寫)

為輸出開啟一個二進位檔案

#"ab"(追加)

為追加開啟一個二進位檔案

#"r "(讀寫)

#"r "(讀寫)

為讀/寫開啟一個文字檔

"w "(讀寫)

為讀/寫建立一個文字檔

"a "(讀寫)

為讀/寫開啟一個文字檔

"rb "(讀寫)

#######為讀取/寫入開啟一個二進位檔案###### ############"wb "(讀寫)###

為讀取/寫入建立一個二進位檔案

#"ab "(讀寫)

#為讀取/寫入開啟一個二進位檔案

#

同一個檔案從磁碟讀取檔案到記憶體(程式資料區或快取區)時,兩種方式下,記憶體中的內容一般不相同,這就是兩種開啟方式的實質差別。

這裡要說一個背景,那就是在windows下,它會做一個處理,就是寫檔案時,換行符會被轉換成回車,換行符存在磁碟檔案上,而讀取磁碟上的文件時,它又會進行逆處理,就是把文件中連續的回車,換行符號轉換成換行符。

因此,在讀取一個磁碟檔案時,文字方式讀取到檔案內容很有可能會比二進位檔案短,因為文字方式讀取要把回車,換行兩個字元變成一個字元,相當於截短了文件。但是為什麼僅僅是可能呢?因為可能文中不存在連著的45,42這兩個位元組(45是CR回車的ASCII碼,42是換行符CL的ASCII碼),也就不存在「截短」操作了,因此讀到的內容是一樣的。

具體的來說,文件檔案(以文字方式寫的),最好以文字方式讀。二進位檔案(以二進位方式寫的),最好以二進位方式讀取。不然可能會不正確。上面的已經分析了。

2.以什麼函數讀寫檔?

資料怎麼在磁碟上寫不是由檔案開啟方式決定的,而是由寫入函數決定的。資料怎麼從磁碟上讀取也不是由檔案開啟方式決定的,而是由讀取函數決定的。

上面說的資料怎麼寫是說指,一種類型的變數是怎麼存的?例如int 12,可以直接存12的二進位碼(4個位元組),也可以存字元1,字元2.

資料怎麼讀的是指,我要讀一個int變量,是直接讀sizeof(int)個字節,還是一個字元一個字元的讀,直到讀到的字元不是數字字元。

C裡面有兩組檔案讀寫函數剛好支援上面兩種方式的讀寫:

  • 1.fread(buffer,size,count,fp), fwrite(buffer,size,count,fp)。用來讀寫一個資料塊。它對應的是第一種儲存方式。直接按類型的位元組長度指定讀寫的位元組數。

  • 2fprintf函數和fscanf函數.它對應的是第二種讀寫方式。即以字元的方式讀寫。 (fprintf函數、fscanf函數與printf函數、scanf函數的作用相仿,都是格式化讀寫函數。fprintf和fscanf函數的讀寫物件是磁碟文件,而printf和scanf函數的讀寫物件是終端。)

它們的一般呼叫格式為:

fprintf(檔案指針,格式字串,輸出清單);

fscanf (檔案指針,格式字串,輸入列表);

3怎麼判斷文件尾?

在C語言,或更精確地說成C標準函式庫中,有一個特別的字元EOF(stdio.h中這個定義 #define EOF (-1) ),它表示:檔案結束符(end of file)。在while循環中以EOF作為文件結束標誌,這種以EOF作為文件結束標誌的文件,必須是文字文件。在文字檔案中,資料都是以字元的ASCII代碼值的形式存放。我們知道,ASCII代碼值的範圍是0~255,不可能出現-1,因此可以用EOF作為文件結束標誌。

但是,C語言中,當將資料以二進位形式存放到檔案中時,就會有-1值的出現,此時不能採用EOF作為二進位檔案的結束標誌。為解決這個問題,ANSI C提供一個feof函數,用來判斷檔案是否結束。如果遇到檔案結束,函數feof(fp)的值為1,否則為0.

feof函數既可用以判斷二進位檔案是否結束,也可以用以判斷文字檔案是否結束。但要注意feof用以判斷文字檔案尾時,如果程式碼寫不當,可能會把文​​中的檔案結束符EOF也讀取出來了;具體見http://baike.baidu.com/view/656648. htm

4.知道一個文件是文字文件,還是二進位文件,更多的「提醒」我們,應該選擇哪種讀寫函數。

如2所說的,資料怎麼存不是由檔案開啟方式決定的,而是由讀寫函數決定的。

比如說,我們以二進位檔案的方式打開一個檔案(實際上只是指明了要進行換行符的轉換),它更多的是代表一種理念(虛的):我“希望”這個檔案裡面的資料是這樣的,int型別佔4位元組,char佔1個位元組。這種模式下,我用fread(buffer,size0f(int),1,fp)讀取一個int到int變數中。

我們記住

我們在對一個檔案進行操作以前,首先,我們要清楚這個檔案到底是文字檔案還是二進位檔案。文件文件以文字方式打開,二進位檔案用二進位方式打開

如果我們要操作一個二進位文件,那麼我們就以二進位方式打開(理論上也可以以文件方式打開,但是如果寫的二進位數據裡面有45時,會轉化成45,42存儲,見1.這是很有可能發生的)。同時讀寫的時候用fread,fwrite這兩個函數。

如果我要操作一個文字文件,那麼我們就以文字的方式打開(理論上也可以以二進位方式打開,但是不保險)。同時讀寫的時候用讀寫字元的那些函數fprintf,fscanf ,fgetc,fputc,putw,getw,fgetc,fputs

相關推薦:《C影片教學

以上是c語言可以處理的檔案類型是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
deepseek網頁版官方入口deepseek網頁版官方入口Mar 12, 2025 pm 01:42 PM

國產AI黑馬DeepSeek強勢崛起,震撼全球AI界!這家成立僅一年半的中國人工智能公司,憑藉其免費開源的大模型DeepSeek-V3和DeepSeek-R1,在性能上與OpenAI等國際巨頭比肩,甚至在成本控制方面實現了突破性進展,贏得了全球用戶的廣泛讚譽。 DeepSeek-R1現已全面上線,性能媲美OpenAIo1正式版!您可以在網頁端、APP以及API接口體驗其強大的功能。下載方式:支持iOS和安卓系統,用戶可通過應用商店下載;網頁版也已正式開放! DeepSeek網頁版官方入口:ht

deepseek服務器繁忙怎麼解決deepseek服務器繁忙怎麼解決Mar 12, 2025 pm 01:39 PM

DeepSeek:火爆AI遭遇服務器擁堵,如何應對? DeepSeek作為2025年開年爆款AI,免費開源且性能媲美OpenAIo1正式版,其受歡迎程度可見一斑。然而,高並發也帶來了服務器繁忙的問題。本文將分析原因並提供應對策略。 DeepSeek網頁版入口:https://www.deepseek.com/DeepSeek服務器繁忙的原因:高並發訪問:DeepSeek的免費和強大功能吸引了大量用戶同時使用,導致服務器負載過高。網絡攻擊:據悉,DeepSeek對美國金融界造成衝擊,

深度求索deepseek官網入口深度求索deepseek官網入口Mar 12, 2025 pm 01:33 PM

2025年開年,國產AI“深度求索”(deepseek)驚艷亮相!這款免費開源的AI模型,性能堪比OpenAI的o1正式版,並已在網頁端、APP和API全面上線,支持iOS、安卓和網頁版多端同步使用。深度求索deepseek官網及使用指南:官網地址:https://www.deepseek.com/網頁版使用步驟:點擊上方鏈接進入deepseek官網。點擊首頁的“開始對話”按鈕。首次使用需進行手機驗證碼登錄。登錄後即可進入對話界面。 deepseek功能強大,可進行代碼編寫、文件讀取、創

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能