當前位置:首頁 » 編程語言 » 二進制文件查找原理C語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

二進制文件查找原理C語言

發布時間: 2022-10-04 22:52:06

c語言二進制文件操作

你寫進去的是文本啊,文本的二進制形式也是可讀的,你寫一點int啊double啊你就知道二進制和文本的寫入區別了。

㈡ 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語言解析二進制文件

//ver:1
//resv1:0
//signature:CUC
//type:69
//no:5
//resv2:0
//seq:4
//length:56
//int2,1
//int2,2
//int1,1
//int4,30
//int1,1
//int1,7
//str,beijing
//int2,1
//int2,4
//int1,1
//int4,60
//int1,1
//int1,7
//str,tianjin
//int4,80
//二進制文件b.bin是:
//00000000h:
//00000010h:
//00000020h:
//00000030h:6E6A696E00000050
#pragmacomment(lib,"ws2_32")
#include<stdio.h>
#include<winsock2.h>
#pragmapack(push,1)
struct_D{
charver;
//charresv1;
charsignature[3];
chartype;
shortno;
charresv2;
intseq;
intlength;
shortint2_0;
shortint2_1;
charint1_0;
intint4_0;
charint1_1;
charint1_2;
charstr_0[7];
shortint2_2;
shortint2_3;
charint1_3;
intint4_1;
charint1_4;
charint1_5;
charstr_1[7];
intint4_2;
}d;
#pragmapack(pop)
FILE*f;
intmain(){
f=fopen("b.bin","rb");
if(NULL==f){
printf("Cannotopenfileb.bin! ");
return1;
}
fread(&d,sizeof(struct_D),1,f);
fclose(f);
printf("ver:%d ",d.ver);
printf("resv1:0 ");
printf("signature:%.3s ",d.signature);
printf("type:%d ",d.type);
printf("no:%hd ",ntohs(d.no));
printf("resv2:%d ",d.resv2);
printf("seq:%d ",ntohl(d.seq));
printf("length:%d ",ntohl(d.length));
printf("int2_0:%hd ",ntohs(d.int2_0));
printf("int2_1:%hd ",ntohs(d.int2_1));
printf("int1_0:%d ",d.int1_0);
printf("int4_0:%d ",ntohl(d.int4_0));
printf("int1_1:%d ",d.int1_1);
printf("int1_2:%d ",d.int1_2);
printf("str_0:%.7s ",d.str_0);
printf("int2_2:%hd ",ntohs(d.int2_2));
printf("int2_3:%hd ",ntohs(d.int2_3));
printf("int1_3:%d ",d.int1_3);
printf("int4_1:%d ",ntohl(d.int4_1));
printf("int1_4:%d ",d.int1_4);
printf("int1_5:%d ",d.int1_5);
printf("str_1:%.7s ",d.str_1);
printf("int4_2:%d ",ntohl(d.int4_2));
return0;
}
//ver:1
//resv1:0
//signature:CUC
//type:69
//no:5
//resv2:0
//seq:4
//length:56
//int2_0:1
//int2_1:2
//int1_0:1
//int4_0:30
//int1_1:1
//int1_2:7
//str_0:beijing
//int2_2:1
//int2_3:4
//int1_3:1
//int4_1:60
//int1_4:1
//int1_5:7
//str_1:tianjin
//int4_2:80
//

代碼示例

㈣ C語言 訪存二進制文件定位問題

1.打開模式要用r+(對於ASCII文件)或者rb+(對於二進制文件)

2.fseek()函數有三個參數,第一個是文件指針,第二個是偏移量,第三個是起始位置,第三個參數有三個可選項,分別是SEEK_SET(文件開頭),SEEK_CUR(當前位置),SEEK_END(文件結尾),feek()函數的作用就是將文件指針指向的文件讀寫位置設置為從起始位置起移動第二個參數表示的偏移量個位元組的位置,第二個參數可以是負數,表示向前移動。

3.你所說的情況,應該用fgetpos()函數和fsetpos()函數設置讀寫位置。請自行上網查找這兩個函數的使用說明。

㈤ C語言文本文件與二進制文件問題

這些都是C語言打開文件函數fopen的一個參數打開文件方式的值:
定義函數 FILE * fopen(const char * path,const char * mode);
函數說明 參數path字元串包含欲打開的文件路徑及文件名,參數mode字元串則代表著流形態。
mode有下列幾種形態字元串:
r 打開只讀文件,該文件必須存在。
r+ 打開可讀寫的文件,該文件必須存在。
rb+ 讀寫打開一個二進制文件,只允許讀寫數據。
rt+ 讀寫打開一個文本文件,允許讀和寫。
w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。
a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。
wb 只寫打開或新建一個二進制文件;只允許寫數據。
wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。
wt+ 讀寫打開或著建立一個文本文件;允許讀寫。
at+ 讀寫打開一個文本文件,允許讀或在文本末追加數據。
ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數據。
上述的形態字元串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函數庫打開的文件為二進制文件,而非純文字文件。不過在POSIX系統,包含Linux都會忽略該字元。由fopen()所建立的新文件會具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)許可權,此文件許可權也會參考umask 值。

自己看吧

㈥ C語言二進制文件的讀取問題

C語言中二進制文件的讀取要用fread和fwrite來實現。
fwrite()與fprintf()是不同的。
fwrite將寫入的數據作為文件的磁碟內容保存。fprintf將寫入的數據的每個字元所對應的ASCII碼作為文件的磁碟內容保存。fprintf做了一個轉換的工作。
當打開文件時,記事本會自動把文件的磁碟內容作為ASCII碼轉換成對應的字元,然後再顯示出來,即顯示的是文本內容而不是磁碟內容。
例如,用fwrite向文件寫入「65」時,文件的磁碟內容就是保存的65(磁碟上以二進製表示)。當用記事本打開文件時,記事本會讀到65,並把65看作一個ASCII碼,再把對應的字元「A」顯示出來。因此屏幕上看到的文本內容是「A」。
而用fprintf向文件寫入「65」時,文件的磁碟內容保存的是「6」和「5」這兩個字元對應的ASCII碼,分別是54和53。因此文件的磁碟內容是54和53。當用記事本打開文件時,記事本讀到54,就顯示出對應的「6」。再讀到53,就顯示出對應的「5」。

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

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

㈧ C語言中二進制文件中如何查找字元串,有具體函數么

二進制文件中哪有字元串這個概念?

補充:
可以用fseek移動指針位置,然後繼續讀取,原型如下
int fseek(FILE *stream, long offset, int fromwhere);