當前位置:首頁 » 編程語言 » c語言二進制讀寫文件

c語言二進制讀寫文件

發布時間: 2022-06-14 09:52:36

❶ 關於c語言二進制文件的讀寫問題

voidload()
{
FILE*fp;

fp=fopen("number","rb");//<--------------------

fread(&a,sizeof(int),1,fp);

fclose(fp);
}

❷ C語言二進制文件讀寫是什麼意思能舉個例子嗎

例如 int a=24
FILE *fp
fp=fopen("txt","wb");
fwrite(&a,sizeof(int),1,fp)
這樣就把它用二進制 寫進了文件裡面
因為 你用的是二進制寫,所以 把你要的寫的東西都換成了二進制
然後存放在文件裡面的 你用記事本打開那個文件 看到的東西是亂的 很正常 不用在意
到時候你用 rb
fread 打開 弄出來 就是24 了
PS: 我喜歡用fwrite 和 fread 因為基本什麼類型的數據都以用 你也可以用其他函數 就看自己的習慣啦

❸ C語言文本方式和二進制方式讀寫操作的區別

首先要明白一點:任何數據在內存中或者硬碟上的存儲都是1、0組成的序列,從硬碟、內存這個角度看根本不存在什麼二進制和文本模式之分
區別
稍對C語言操作文件有了解都知道2點:1、首先應該fopen打開文件2、有兩類文件操作函數,對應著二進制模式和文本模式。
兩個模式的區別在兩個地方,這兩個地方的區別正好體現在剛才說的2點上。
1、
打開文件時選擇模式
使用fopen函數時,要給予第二個參數一個值,告訴fopen使用什麼模式打開文件。這里的參數決定的就是第一個區別:對於字元串中的\n如何處理?
教材中說,文本模式中,在存儲\n時要轉化為\r\n,讀取文件時進行逆轉換。二進制模式時,則不進行轉換。這是在操作系統是Windows的條件下。
首先我們要知道回車和換行是不相同的,Windows中文字另起一行內存表示為<回車><換行>對應\r\n,而Linux、Unix中則是單單一個<換行>對應\n。Mac中則是一個<回車>對應\r
C語言起源於Unix的產生,對於文件中的另起一行,Unix採用單個\n表示。所以我們通常在輸出一個短話想換行時加一個\n就可以了,Windows也是如此。到了數據從內存到硬碟上進行存儲時,對於unix來說,\n照樣是\n。而Windows為了防止讀取時混亂必須轉換為\r\n。Mac呢,就是\r。
這就是第一區別,這個區別是體現在fopen第二個參數,跟你使用文本模式的函數還是二進制模式的函數根本不相關!你可以做一個實驗,使用二進制模式的函對於同樣的字元串:」Hello\n」,當fopen使用w參數寫入文件,無論是fwrite還是fprintf都會對\n會進行轉換,而使用wb參數則都不進行轉換。
2、
兩種不同模式的函數
打開文件後,要進行數據寫入。
教材中說,使用文本模式打開文件,就要用fprintf寫入數據,使用二進制模式打開文件,就要用fwrite寫入數據。
其實你用文本模式打開文件,一個字元串,fprintf、fwrite都能寫入文件,寫入還都是一樣的數據。使用兩類函數的區別其實在於數字的處理上。
對於一個數字5,你用fprintf寫入,將把數字5轉換為字元5,將其對應的ASCII編碼存入存儲器,佔用1個位元組。但實際上數字5就是數字5,對應2進制101,整形佔用4個位元組。fwrite則將這個數字在內存中佔用的4個位元組全部原樣寫入到硬碟中,佔4個位元組。
而同樣對於一段字元串」Hello」,使用ASCII編碼對於fprintf和fwrite都能原樣寫到硬碟中。
同樣對於這個區別,你仍然能做個實驗,對於一個int型數字5,你如何用fprintf和fwrite寫入到硬碟中,他們對應的十六進制碼是多少?對於一段字元串你再用兩個函數分別寫到硬碟中,你看看對應的十六進制碼是什麼。這個實驗跟你用fopen如何指定第二個參數無關。

❹ c語言讀取二進制數據文件

1、二進制文本使用fopen函數的二進制模式「rb」就可以打開。對於程序來說,不管後綴名如何,文件分為兩種類型:文本文件和二進制文件。 C語言里有一系列文件操作函數。區分文本和二進制文件,需要在打開文件時設置不同的控制符mode的變數即可。

2、fopen的函數原型:FILE * fopen(const char * path,const char * mode);
fopen函數的第一個參數是文件路徑,第二個參數是打開方式,有以下幾種方式:
r 以只讀方式打開文件,該文件必須存在。
r+ 以可讀寫方式打開文件,該文件必須存在。
rb+ 讀寫打開一個二進制文件,允許讀數據。
rw+ 讀寫打開一個文本文件,允許讀和寫。
w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)
a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。 (原來的EOF符不保留)
wb 只寫打開或新建一個二進制文件;只允許寫數據。
wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。
wt+ 讀寫打開或著建立一個文本文件;允許讀寫。
at+ 讀寫打開一個文本文件,允許讀或在文本末追加數據。
ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數據。
上述的形態字元串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函數庫打開的文件為二進制文件,而非純文字文件。

3、常式:

#include <stdlib.h>
#include <stdio.h>
int main ()
{
FILE * fpPhoto, * fpText, * fpTarget ;
int iRead ;
char szBuf[100] ;

printf ("請輸入第一個文件名(jpg):\n") ;
gets (szBuf) ;
fpPhoto = fopen (szBuf, "rb") ;
printf ("請輸入第二個文件名(txt):\n") ;
gets (szBuf) ;
fpText = fopen (szBuf, "rb") ;
printf ("請輸入目的文件名(jpg):\n") ;
gets (szBuf) ;
fpTarget = fopen (szBuf, "wb") ;

if (!fpPhoto || !fpText || !fpTarget)
{
printf ("打開文件失敗!\n") ;
system("pause") ;
return -1 ;
}

while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpPhoto)) > 0)
fwrite (szBuf, 1, iRead, fpTarget) ;
while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpText)) > 0)
fwrite (szBuf, 1, iRead, fpTarget) ;

fclose (fpPhoto) ;
fclose (fpText) ;
fclose (fpTarget) ;
return 0 ;
}

❺ C語言怎麼編寫一個程序讀取任何二進制文件,並將文件內所有位元組按相反排序存入另一文件中

如果文件不大的話,可以定義一個數組,一次性將文件內容都讀出來,然後從後向前寫到新文件中,如果文件很大的話,就將文件指針定位到文件結尾的前一個位元組處,循環讀一個位元組寫入另一個文件,並將原文件指針往回移2個位元組,直到將所有位元組反向讀取完成並寫入。
#include <stdio.h>

main()
{
char c;

FILE *rfp, *wfp;

rfp = fopen("a.bin", "rb"); // 文件名自己指定
if(rfp == NULL) {
printf("文件不存在\n");

return -2;

}

wfp = fopen("b.bin", "wb");

if(wfp == NULL) {
printf("無法創建文件\n");

return -2;

}

fseek(rfp, -1, SEEK_END);

do {

fread(&c, sizeof(char), 1, rfp);
fwrite(&c, sizeof(char), 1, wfp);
} while(fseek(rfp, -2, SEEK_CUR) == 0);

fclose(rfp);

fclose(wfp);

}

❻ c語言怎麼二進制文件操作

主要就是二進制文件的讀寫、結構體的定義和使用。
fopen函數 以 "ab+" 方式打開文件,用fwrite函數寫入內容; "b" 方式打開文件,讀取內容;

❼ C語言採用文本方式和二進制方式打開文件的區別分析

fprintf
fscanf函數是對文件ASCII碼讀寫(文件)
fread
fwrite函數是對文件二進制讀寫
文本讀寫將文件中的ASCII碼轉換成二進制在保存在內存變數中
二進制讀寫直接將內存中的數據原封不動、不加轉換地復制到磁碟文件上,讀入也是直接講磁碟中的內容讀入到內存,效率比文本快多了

❽ c語言 二進制文件讀和寫

二進制讀寫應該在打開文件時加「b」
if((fp=fopen(fpname,"w+b"))==NULL)
if((fp=fopen(fpname,"r+b"))==NULL)

❾ c語言怎麼用二進制方式讀取文件

C語言中二進制文件的讀取要用fread和fwrite來實現。 fwrite()與fprintf()是不同的。 fwrite將寫入的數據作為文件的磁碟內容保存。fprintf將寫入的數據的每個字元所對應的ASCII碼作為文件的磁碟內容保存。fprintf做了一個轉換的工作。

熱點內容
c語言訪問http 發布:2024-05-05 20:04:14 瀏覽:873
什麼可以配置波爾多葉 發布:2024-05-05 20:00:32 瀏覽:962
cgxrar解壓密碼 發布:2024-05-05 19:47:24 瀏覽:632
ubuntu編譯linux內核 發布:2024-05-05 19:46:05 瀏覽:7
php靜態方法調用對象 發布:2024-05-05 19:24:30 瀏覽:366
電腦LNS伺服器地址 發布:2024-05-05 19:22:15 瀏覽:376
不屬於編譯程序組成的部分是什麼 發布:2024-05-05 19:05:34 瀏覽:613
壓縮麵食 發布:2024-05-05 18:55:45 瀏覽:804
linux的gz解壓命令 發布:2024-05-05 18:24:13 瀏覽:311
伺服器機櫃屬於什麼輻射 發布:2024-05-05 18:02:10 瀏覽:336