c語言讀文件二進制文件
⑴ c語言怎麼用二進制方式讀取文件
C語言中二進制文件的讀取要用fread和fwrite來實現。 fwrite()與fprintf()是不同的。 fwrite將寫入的數據作為文件的磁碟內容保存。fprintf將寫入的數據的每個字元所對應的ASCII碼作為文件的磁碟內容保存。fprintf做了一個轉換的工作。
⑵ c語言怎麼二進制文件操作
主要就是二進制文件的讀寫、結構體的定義和使用。
fopen函數 以 "ab+" 方式打開文件,用fwrite函數寫入內容; "b" 方式打開文件,讀取內容;
⑶ c語言如何讀寫二進制
詳細:http://hi..com/gibbon_ho/blog/item/9ca853e68447c42bb9382086.html
我一直覺得二進制文件讀寫是個很容易的事,所以一直沒在意,最近在寫一個http客戶端,實現文件下載的時候,發現總有問題,後來才發現是忘記寫文件用二進制方式,慚愧的很啊。然後,就在網上搜索了一下,發現通過C語言實現二進制文件讀寫的資料居然出奇的少,這讓我很憤怒,因為雖然這東西很簡單,但是對於初學者,往往會需要花很長的時間去弄,一旦明白,又發現花的時間很不值得,罷了,這里通過一個文件拷貝的例子來講講二進制文件的讀寫吧。先介紹函數,我們一共要用到三個函數,fopen,fread,fwrite。二進制讀寫的順序是用fopen以二進制方式打開讀寫文件,然後使用fread和fwrite兩個函數將數據寫入二進制文件中。下面我們看看一個拷貝程序的源碼:
Copy.c:#include <stdio.h>
#include <stdlib.h>
#define MAXLEN 1024
int main(int argc, char *argv[])
{
if( argc < 3 )
{
printf("usage: %s %s\n", argv[0], "infile outfile");
exit(1);
}
FILE * outfile, *infile;
outfile = fopen(argv[2], "wb" );
infile = fopen(argv[1], "rb");
unsigned char buf[MAXLEN];
if( outfile == NULL || infile == NULL )
{
printf("%s, %s",argv[1],"not exit\n");
exit(1);
}
int rc;
while( (rc = fread(buf,sizeof(unsigned char), MAXLEN,infile)) != 0 )
{
fwrite( buf, sizeof( unsigned char ), rc, outfile );
}
fclose(infile);
fclose(outfile);
system("PAUSE");
return 0;
}
⑷ c語言讀二進制文件
#include <stdio.h>
main( )
{
FILE *fp;
float data[6];
int i;
/*打開文件*/
fp=fopen("yibin","rb");
if(fp==null) exit(0);
/*從文件中讀6個浮點到緩沖區data中*/
fread(data,sizeof(float),6);
/*顯示緩沖區的內容*/
for(i=0;i<6;i++)
printf("%f\n",data[i]);
return 0;
}
⑸ 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語言怎麼編寫一個程序讀取任何二進制文件,並將文件內所有位元組按相反排序存入另一文件中
如果文件不大的話,可以定義一個數組,一次性將文件內容都讀出來,然後從後向前寫到新文件中,如果文件很大的話,就將文件指針定位到文件結尾的前一個位元組處,循環讀一個位元組寫入另一個文件,並將原文件指針往回移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語言用什麼函數讀取2進制文件內容
你怎麼輸出的?
二進制如果以文本輸出,自然會有很多亂碼。
你可以用"%x"格式輸出看看
char
a;
a=fgetc(fp1);
printf("%c",
a);/*這樣肯定有亂碼*/
printf("%x",
a);/*這樣就是16進制*/
⑻ C語言鏈表讀取二進制文件
關鍵代碼應該是這樣的
FILE *fp = fopen("file","rb");
char *p = node->data;
while(!feof(fp))
*p++ = fgetc(fp);
fclose(fp);
//**********************以上讀*******************
FILE *fp = fopen("file","wb");
char *p = node->data;
while( p < node->data+len)
fputc(fp,*p++);
fclose(fp);
//**********************以上寫*******************
⑼ c語言怎麼讀取二進制文件
main()
{
FILE * stream;
int i;
stream = fopen("/tmp/fwrite","r");
fread(s,sizeof(struct test),nmemb,stream);
fclose(stream);
for(i=0;i<nmemb;i++)
printf("name[%d]=%-20s:size[%d]=%d/n",i,s[i].name,i,s[i].size);
}
供參考
⑽ 在c語言中如何打開二進制文件
文本文件和二進制文件就是一個聲明,指明了你應該以什麼方式(文本方式/二進制)打開這個文件,用什麼函數讀寫這個文件(讀寫函數),怎麼判斷讀到這個文件結尾。
具體的說:
C規定了標准輸入輸出函數庫,用fopen()函數打開文件。fopen()函數的調用方式一般為:
FILE*fp;//定義一個文件類型的指針變數fp
fp=fopen(文件名,使用文件方式);
使用文件方式見下表:
"r"(只讀) 為輸入打開一個文本文件
"w"(只寫) 為輸出打開一個文本文件
"a"(追加) 為追加打開一個文本文件
"rb"(只讀) 為輸入打開一個二進制文件
"wb"(只寫) 為輸出打開一個二進制文件
"ab"(追加) 為追加打開一個二進制文件
"r+"(讀寫) 為讀/寫打開一個文本文件
"w+"(讀寫) 為讀/寫創建一個文本文件
"a+"(讀寫) 為讀/寫打開一個文本文件
"rb+"(讀寫) 為讀/寫打開一個二進制文件
"wb+"(讀寫) 為讀/寫創建一個二進制文件
"ab+"(讀寫) 為讀/寫打開一個二進制文件