本文目錄一覽:
C語言怎麼讀取二進位文件中的數據放到一個300×300的二維數組裡面
用 fopen 打開文件時 設 “rb” –用二進位方法打開,用於讀
用 fread 讀取數據,函數原型是:
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
各參數意義,請查編譯器幫助文件,這裡就不開課了。
300×300 的數組需要的內存量較大,可動態分配,或用 全局量。
下面是程序例子。先建了一個2進位文件,裡面存了300*300個float型數據。然後讀這個文件里的內容。
#includestdio.h
float a[300][300];
int main()
{
FILE *fin, *fout;
int i,j;
for (j=0;j300;j++) for (i=0;i300;i++) a[j][i]=j*100+i;
fout=fopen(“a.txt”,”wb”);
for (j=0;j300;j++)
fwrite(a[j][0],sizeof(float),300,fout);
fclose(fout);
for (j=0;j300;j++) for (i=0;i300;i++) a[j][i]=0; //數組清零
fin=fopen(“a.txt”,”rb”); //打開輸入文件
for (j=0;j300;j++)
fread(a[j][0],sizeof(float),300,fin); //讀文件
fclose(fin); //關閉文件
// 下面輸出文件的左上角100個數據,和右下角100個數據供檢查參考。
for (j=0;j10;j++) {
for (i=0;i10;i++)printf(“%3.0f “,a[j][i]); printf(“\n”);}
printf(“\n”);
for (j=290;j300;j++){
for (i=290;i300;i++)printf(“%g “,a[j][i]); printf(“\n”);}
return 0;
}
c語言怎麼讀取二進位文件?
main()
{
FILE * stream;
int i;
stream = fopen(“/tmp/fwrite”,”r”);
fread(s,sizeof(struct test),nmemb,stream);
fclose(stream);
for(i=0;inmemb;i++)
printf(“name[%d]=%-20s:size[%d]=%d/n”,i,s[i].name,i,s[i].size);
}
供參考
怎麼在讀入文件前獲得文件大小【C語言版】
如果文件大小指的是你從C
程序中可以讀進的字元數量,
要得到這個精確的數字可能困難或不可能。
Unix
系統函數stat()
會給出準確的答案。有些系統提供了類似Unix
的stat()函數,
但只返回一個近似值。你可以調用fseek()
搜索到文件尾,
再調用ftell(),
或者調用fstat(),
然而這些方法都有同樣的問題:
fstat()
不可移植,
通常返回和stat()一樣的值;
ftell()
並不保證可以返回字元計數,
除非是用於二進位文件,
但是,
嚴格來講,
二進位文件並不一定支持fseek
搜索到SEEK
END。某些系統提供filesize()
或filelength()
的函數,
但是它們明顯的不可移植。你是否確定你必須預先知道文件大小?作為一個C
程序最準確的方法就是打開文件並讀入,
也許可以重新整理代碼,
使其邊讀入邊計算文件大小。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/206899.html