欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語言二進(jìn)制文件讀寫函數(shù),C語言寫二進(jìn)制文件

c語言用什么函數(shù)讀取2進(jìn)制文件內(nèi)容

你怎么輸出的?

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括東營區(qū)網(wǎng)站建設(shè)、東營區(qū)網(wǎng)站制作、東營區(qū)網(wǎng)頁制作以及東營區(qū)網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,東營區(qū)網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到東營區(qū)省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

二進(jìn)制如果以文本輸出,自然會有很多亂碼。

你可以用"%x"格式輸出看看

char

a;

a=fgetc(fp1);

printf("%c",

a);/*這樣肯定有亂碼*/

printf("%x",

a);/*這樣就是16進(jìn)制*/

C語言二進(jìn)制文件讀寫是什么意思?能舉個(gè)例子嗎

例如 int a=24

FILE *fp

fp=fopen("txt","wb");

fwrite(a,sizeof(int),1,fp)

這樣就把它用二進(jìn)制 寫進(jìn)了文件里面

因?yàn)? 你用的是二進(jìn)制寫,所以 把你要的寫的東西都換成了二進(jìn)制

然后存放在文件里面的 你用記事本打開那個(gè)文件 看到的東西是亂的 很正常 不用在意

到時(shí)候你用 rb

fread 打開 弄出來 就是24 了

PS: 我喜歡用fwrite 和 fread 因?yàn)榛臼裁搭愋偷臄?shù)據(jù)都以用 你也可以用其他函數(shù) 就看自己的習(xí)慣啦

C語言中有沒有按位存儲讀取2進(jìn)制文件的函數(shù)

可以

示例

struct TenByte

{

int value : 10;

};

int main() //主函數(shù)

{

TenByte tb1;

tb1.value = 150;

FILE* fp = fopen( "1.dat", "w" );

fwrite( tb1, sizeof(TenByte), 1, fp );

fclose( fp );

fp = fopen( "1.dat", "r" );

TenByte tb2;

fread( tb2, sizeof(TenByte), 1, fp );

fclose( fp );

return 0;

}

但是我這里雖然聲明了它以10位存儲,實(shí)際長度還是4個(gè)字節(jié)。編譯器的行為,沒有辦法避免,如果有好的方法,我也學(xué)習(xí)一下。

C語言 結(jié)構(gòu)體指針字符 二進(jìn)制文件寫入和讀取

當(dāng)然不對了,你的結(jié)構(gòu)體成員,是一個(gè)指針

sizeof(student) ,win32是4字節(jié),win64是8字節(jié)

當(dāng)讀入其中4個(gè)或8個(gè)字節(jié)時(shí),它指向的指針地址并不一定存在

你可以定義為一個(gè)字符數(shù)組

請問C語言對文件的讀取有哪些函數(shù),都有什么功能?像fseek();fscanf();fread......什么的

C語言文件操作函數(shù)

13.1C語言文件

1,兩種文件存取方式(輸入,輸出方式)

順序存取

直接存取

2,數(shù)據(jù)的兩種存放形式

文本文件

二進(jìn)制文件

13.2文件指針

定義文件類型指針變量的一般形式:

FILE *指針變量名;

例如:

FILE *fp1,*fp2;

13.3打開文件

在使用文件之前,需打開文件.在C里使用fopen函數(shù)打開文件.格式為:

fopen(文件名,文件使用方式);

此函數(shù)返回一個(gè)指向FILE類型的指針.如:

FILE *fp;

fp=fopen("file_1","r");

如果調(diào)用成功,fp就指向file_1,否則返回為NULL,所以為了保證文件的正確使用,要進(jìn)行測試.采用如下語句:

If((fp=fopen("file_1","r"))==NULL)

{

printf("Cannot open this file\n");

exit(0);

}

最常用的文件使用方式及其含義如下:

1,"r".為讀而打開文本文件.(不存在則出錯(cuò))

2,"rb".為讀而打開二進(jìn)制文件.

3,"w".為寫而打開文本文件.(若不存在則新建,反之,則從文件起始位置寫,原內(nèi)容將被覆蓋)

4,"wb".為寫而打開二進(jìn)制文件.

5,"a".為在文件后面添加數(shù)據(jù)而打開文本文件.(若不存在,則新建;反之,在原文件后追加)

6,"ab".為在文件后面添加數(shù)據(jù)而打開一個(gè)二進(jìn)制文件.

最常用的文件使用方式及其含義如下:

7,"r+".為讀和寫而打開文本文件.(讀時(shí),從頭開始;在寫數(shù)據(jù)時(shí),新數(shù)據(jù)只覆蓋所占的空間,其后不變)

8,"rb+".為讀和寫而打開二進(jìn)制文件.只是在隨后的讀寫時(shí),可以由位置函數(shù)設(shè)置讀和寫的起始位置.

9,"w+".首先建立一個(gè)新文件,進(jìn)行寫操作,隨后可以從頭開始讀.(若文件存在,原內(nèi)容將全部消失)

10,"wb+".功能與"w+"同.只是在隨后的讀寫時(shí),可以由位置函數(shù)設(shè)置讀和寫的起始位置.

最常用的文件使用方式及其含義如下:

11,"a+".功能與"a"相同;只是在文件尾部添加新的數(shù)據(jù)后,可以從頭開始讀.

12,"ab+".功能與"a+"相同;只是在文件尾部添加新數(shù)據(jù)之后,可以由位置函數(shù)設(shè)置開始讀的起始位置.

13.4關(guān)閉文件

當(dāng)文件的讀寫操作完成之后,使用fclose函數(shù)關(guān)閉文件.格式如下:

fclose(文件指針)

如:fclose(fp);

13.5調(diào)用getc(fgetc)和putc(fputc)函數(shù)進(jìn)行輸入和輸出

1,調(diào)用putc(或fputc)函數(shù)輸出一個(gè)字符

調(diào)用形式為:

putc(ch,fp);

功能是:將字符ch寫到文件指針fp所指的文件中去.當(dāng)輸出成功,putc函數(shù)返回所輸出的字符;否則,返回一個(gè)EOF值.EOF是在stdio.h庫函數(shù)文件中定義的符號常量,其值等于-1.

13.5調(diào)用getc(fgetc)和putc(fputc)函數(shù)進(jìn)行輸入和輸出

例如:把從鍵盤輸入的文本按原樣輸出到名為file_1.dat文件中,用字符@作為鍵盤輸入結(jié)束標(biāo)志.

#include

Void main()

{

FILE *fpout;

char ch;

if(fpout=fpopen("file_1","w")==NULL)

{

printf("Cannot open this file!\n");

exit(0);

}

ch=getchar();

while(ch!='@')

{ fputc(ch,fpout); ch=getchar(); }

fclose(fpout);

}

2.調(diào)用getc(或fgetc)函數(shù)輸入一個(gè)字符

調(diào)用形式為:

ch=getc(pf);

功能是:從pf指定的文件中讀如一個(gè)字符,并把它作為函數(shù)值返回.

例如:把一個(gè)已存在磁盤上的file_1.dat文本文件中的內(nèi)容,原樣輸出到終端屏幕上.

#include

void main(){

FILE *fpin;

char ch;

if((fpin=fopen("file_1.dat","r"))==NULL)

{ printf("Cann't open this file!\n");exit(0);}

ch=fgetc(fpin);

while (ch!=EOF)

{ putchar(ch); ch=fgetc(fpin);}

fclose(fpin);

}

13.6判斷文件結(jié)束函數(shù)feof

EOF可以作為文本文件的結(jié)束 標(biāo)志,但不能作為二進(jìn)制文件的結(jié)束符.feof函數(shù)既可以判斷二進(jìn)制文件,又可以判斷文本文件.

例:編寫程序,用于把一個(gè)文本文件(源)復(fù)制到另一個(gè)文件(目的)中,源文件名和目的文件名由命令行輸入.命令形式如下:

可執(zhí)行程序名 源文件名 目的文件名

#include

void filecopy(FILE* ,FILE *);

void main(int argc,char *argv[]){

FILE *fpin,*fpout;

if(argc==3)

{ fpin=fopen(argv[1],"r");

fpout=fopen(argv[2],"w");

filecopy(fpin,fpout);

fclose(fpin);fclose(fpout);

}

else if(argc3)

printf("The file names too many!!\n";

else

printf("There are no file names for input or output!!\n );

}

void filecopy(FILE *fpin,FILE *fpout)

{

char ch;

ch=getc(fpin);

while(!feof(fpin))

{putc(ch,fpout); ch=getc(fpin);}

}

13.7fscanf函數(shù)和fprintf函數(shù)

1,fscanf函數(shù)

fscanf只能從文本文件中按格式輸入,和scanf函數(shù)相似,只不過輸入的對象是磁盤上文本文件中的數(shù)據(jù).調(diào)用形式為:

fscanf(文件指針,格式控制字符串,輸入項(xiàng)表)

例如:fscanf(fp,"%d%d",a,b);

fscanf(stdin,"%d%d",a,b);

等價(jià)于scanf("%d%d",a,b);

3.fprintf函數(shù)

fprintf函數(shù)按格式將內(nèi)存中的數(shù)據(jù)轉(zhuǎn)換成對應(yīng)的字符,并以ASCII代碼形式輸出到文本文件中.Fprintf函數(shù)和printf函數(shù)相似,只是將輸出的內(nèi)容按格式存放到磁盤的文本文件中.調(diào)用形式如下:

fprintf(文件指針,格式控制字符串,輸出項(xiàng)表)

如:fprintf(fp,"%d %d",x,y);

以下語句 fprintf(stdout,"%d %d",x,y)

13.8fgets函數(shù)和fputs函數(shù)

1,fgets函數(shù)

fgets函數(shù)用來從文件中讀入字符串.調(diào)用形式如下:

fgets(str,n,fp);

函數(shù)功能是:從fp所指文件中讀入n-1個(gè)字符放入str為起始地址的空間內(nèi);如果在未讀滿n-1個(gè)字符時(shí),則遇到換行符或一個(gè)EOF結(jié)束本次讀操作,并已str作為函數(shù)值返回.

13.8fgets函數(shù)和fputs函數(shù)

2,fputs函數(shù)

fput函數(shù)把字符串輸出到文件中.函數(shù)調(diào)用形式如下:

fputs(str,fp);

注意:為了便于讀入,在輸出字符串時(shí),應(yīng)當(dāng)人為的加諸如"\n"這樣的字符串.

#include stdio.h

#include iostream

int main(int argc, char *argv[])

{

char arr[10] ;

char *ap = "hello!" ;

FILE *fp ;

if ((fp = fopen("hello.txt", "wt+")) == NULL)

{

printf("error!") ;

exit(1) ;

}

fputs(ap, fp) ;

rewind(fp) ; //

fgets(arr, 10, fp) ;

printf("%s\n", arr) ;

fclose(fp) ;

return 0 ;

}

13.9fread函數(shù)和fwrite函數(shù)

例如有如下結(jié)構(gòu)體:

struct st{

char num[8];

float mk[5];

}pers[30];

以下循環(huán)將把這30個(gè)元素中的數(shù)據(jù)輸出到fp所指文件中.

for(i=0;i30;i++)

fwrite(pers[i],sizeof(struct st),1,fp);

13.9fread函數(shù)和fwrite函數(shù)

以下語句從fp所指的文件中再次將每個(gè)學(xué)生數(shù)據(jù)逐個(gè)讀入到pers數(shù)組中.

i=0;

fread(pers[i],sizeof(struct st),1,fp);

while(!feof(fp))

{ i++;

fread(pers[i],sizeof(struct st),1,fp);

}

13.10文件定位函數(shù)

1,fseek函數(shù)

fseek函數(shù)用來移動(dòng)文件位置指針到指定的位置上,接著的讀或?qū)懖僮鲗拇宋恢瞄_始.函數(shù)的調(diào)用形式如下:

fseek(pf,offset,origin)

pf:文件指針

offset:以字節(jié)為單位的位移量,為長整形.

origin:是起始點(diǎn),用來指定位移量是以哪個(gè)位置為基準(zhǔn)的.

1,fseek函數(shù)

位移量的表示方法

標(biāo)識符 數(shù)字 代表的起始點(diǎn)

SEEK_SET 0 文件開始

SEEK_END 2 文件末尾

SEEK_CUR 1 文件當(dāng)前位置

假設(shè)pf已指向一個(gè)二進(jìn)制文件,則;

fseek(pf,30L,SEEK_SET)

fseek(pf,-10L*sizeof(int),SEEK_END)

對于文本文件,位移量必須是0;如:

fseek(pf,0L,SEEK_SET)

fseek(pf,0L,SEEK_END)

2. ftell函數(shù)

ftell函數(shù)用以獲得文件當(dāng)前位置指針的位置,函數(shù)給出當(dāng)前位置指針相對于文件開頭的字節(jié)數(shù).如;

long t;

t=ftell(pf);

當(dāng)函數(shù)調(diào)用出錯(cuò)時(shí),函數(shù)返回-1L.

我們可以通過以下方式來測試一個(gè)文件的長度:

fseek(fp,0L,SEEK_END);

t=ftell(fp);

3.rewind函數(shù)

調(diào)用形式為:

rewind(pf);

函數(shù)沒有返回值.函數(shù)的功能是使文件的位置指針回到文件的開頭.

13.10文件應(yīng)用

在磁盤上的test.txt文件中放有10個(gè)不小于2的正整數(shù),用函數(shù)調(diào)用方式編寫程序.要求實(shí)現(xiàn):

1,在被調(diào)函數(shù)prime中,判斷和統(tǒng)計(jì)10個(gè)整數(shù)中的素?cái)?shù)以及個(gè)數(shù).

2,在主函數(shù)中將全部素?cái)?shù)追加到磁盤文件test.txt的尾部,同時(shí)輸出到屏幕上.

#include

#include

Int prime(int a[],int n)

{

int I,j,k=0,flag=0;

for(i=0;i { for(j=2;j if(a[i]%j==0)

{ flag=0; break;}

else flag=1;

if(flag)

{a[k]=a[i];k++;}

}

return k;

}

void main(){

int n,I,a[10];

FILE *fp;

fp=fopen("test1-2.txt","r+");

for(n=0;n10;n++)

fscanf(fp,"%d",a[n]);

n=prime(a,n);

fseek(fp,o,2);

for(i=0;i {printf("%3d",a[i]);

fprintf(fp,"%3d",a[i]);

}

fclose(fp);

如何用C語言讀寫文件

c語言讀寫文件程序:

#include "stdio.h"

#include stdlib.h

main()

{

FILE *fp1;//定義文件流指針,用于打開讀取的文件

FILE *fp2;//定義文件流指針,用于打開寫操作的文件

char text[1024];//定義一個(gè)字符串?dāng)?shù)組,用于存儲讀取的字符

fp1 = fopen("d:\\a.txt","r");//只讀方式打開文件a.txt

fp2 = fopen("d:\\b.txt","w");//寫方式打開文件a.txt

while(fgets(text,1024,fp1)!=NULL)//逐行讀取fp1所指向文件中的內(nèi)容到text中

{

puts(text);//輸出到屏幕

fputs(text,fp2);//將內(nèi)容寫到fp2所指向文件中

}

fclose(fp1);//關(guān)閉文件a.txt,有打開就要有關(guān)閉

fclose(fp2);//關(guān)閉文件b.txt

}

擴(kuò)展資料:

C語言文件讀寫操作總結(jié)

一.非標(biāo)準(zhǔn)文件的讀寫 不帶緩沖的

1.文件的打開和關(guān)閉

open()函數(shù)的作用是打開文件,其調(diào)用格式為: int open(char *filename, int access); 該函數(shù)表示按access的要求打開名為filename的文件,返回值為文件描述字,其中access有兩部分內(nèi)容: 基本模式和修飾符, 兩者用" "("或")方式連接,修飾符可以有多個(gè), 但基本模式只能有一個(gè)。

access的規(guī)定

O_RDONLY 只讀

O_APPEND 文件指針指向末尾

O_WRONLY 只寫

O_CREAT 文件不存在時(shí)創(chuàng)建文件, 屬性按基本模式屬性

O_RDWR 讀寫

O_BINARY 打開一個(gè)二進(jìn)制文件

O_TEXT 打開一個(gè)文字文件

open()函數(shù)打開成功, 返回值就是文件描述字的值(非負(fù)值), 否則返回-1。 close()函數(shù)的作用是關(guān)閉由open()函數(shù)打開的文件, 其調(diào)用格式為: int close(int handle); 該函數(shù)關(guān)閉文件描述字handle相連的文件。

2.讀寫函數(shù)

int read(int handle, void *buf, int count);

read()函數(shù)從handle(文件描述字)相連的文件中, 讀取count個(gè)字節(jié)放到buf所指的緩沖區(qū)中, 返回值為實(shí)際所讀字節(jié)數(shù), 返回-1表示出錯(cuò)。返回0 表示文件結(jié)束。

write()函數(shù)的調(diào)用格式為: int write(int handle, void *buf, int count); write()函數(shù)把count個(gè)字節(jié)從buf指向的緩沖區(qū)寫入與handle相連的文件中, 返回值為實(shí)際寫入的字節(jié)數(shù)。

3.隨機(jī)定位函數(shù)

lseek()函數(shù)的調(diào)用格式為: int lseek(int handle, long offset, int fromwhere);

該函數(shù)對與handle相連的文件位置指針進(jìn)行定位,功能和用法與fseek()函數(shù)相同。 tell()函數(shù)的調(diào)用格式為: long tell(int handle); 該函數(shù)返回與handle相連的文件現(xiàn)生位置指針, 功能和用法與ftell()相同

二、標(biāo)準(zhǔn)文件的讀寫

1.文件的打開函數(shù)fopen()

文件的打開操作表示將給用戶指定的文件在內(nèi)存分配一個(gè)FILE結(jié)構(gòu)區(qū),并將該結(jié)構(gòu)的指針返回給用戶程序,以后用戶程序就可用此FILE指針來實(shí)現(xiàn)對指定文件的存取操作了。

當(dāng)使用打開函數(shù)時(shí),必須給出文件名、文件操作方式(讀、寫或讀寫),如果該文件名不存在,就意味著建立(只對寫文件而言,對讀文件則出錯(cuò)),并將文件指針指向文件開頭。若已有一個(gè)同名文件存在,則刪除該文件,若無同名文件,則建立該文件,并將文件指針指向文件開頭。

fopen(char *filename,char *type);

其中*filename是要打開文件的文件名指針,一般用雙引號括起來的文件名表示,也可使用雙反斜杠隔開的路徑名。

而*type參數(shù)表示了對打開文件的操作方式。其可采用的操作方式如下:

"r" 打開,只讀; "w" 打開,文件指針指到頭,只寫; "a" 打開,指向文件尾,在已存在文件中追加; "rb" 打開一個(gè)二進(jìn)制文件,只讀; "wb" 打開一個(gè)二進(jìn)制文件,只寫; "ab" 打開一個(gè)二進(jìn)制文件,進(jìn)行追加 ;

"r+" 以讀/寫方式打開一個(gè)已存在的文件; "w+" 以讀/寫方式建立一個(gè)新的文本文件 ;"a+" 以讀/寫方式打開一個(gè)文件文件進(jìn)行追加 ;"rb+" 以讀/寫方式打開一個(gè)二進(jìn)制文件; "wb+" 以讀/寫方式建立一個(gè)新的二進(jìn)制文件 ;

"ab+" 以讀/寫方式打開一個(gè)二進(jìn)制文件進(jìn)行追加 ;當(dāng)用fopen()成功的打開一個(gè)文件時(shí),該函數(shù)將返回一個(gè)FILE指針,如果文件打開失敗,將返回一個(gè)NULL指針。

當(dāng)前標(biāo)題:c語言二進(jìn)制文件讀寫函數(shù),C語言寫二進(jìn)制文件
當(dāng)前路徑:http://www.chinadenli.net/article2/dsgehic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號標(biāo)簽優(yōu)化定制網(wǎng)站手機(jī)網(wǎng)站建設(shè)網(wǎng)站制作外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司