簡體   English   中英

如何讀取二進制文件並保存到C中的數組?

[英]How to read binary file and save to array in C?

我有一個csv格式的文件,如下所示:

0.0060862,0.31869
0.025889,0.21183
0.064364,0.094135
0.10712,-0.0081176
0.15062,-0.073904

我想將第一列加載到數組a,將第二列加載到數組b。 代碼如下所示:

double a[5];
double b[5];
int i=0;
FILE* fileHandle = NULL;
fopen_s(&fileHandle, fileName.csv, "r+");
for(i=0;i<5;i++)
{
 fscanf_s(fileHandle,"%lf,%lf",a[i],b[i]);
}
fclose(fileHandle);

現在,我將csv文件轉換為二進制文件; 數據在unsigned int以2的補碼表示。 我應該如何更改我的代碼? 我將代碼更改為

unsigned x[5];
unsigned y[5];
double a[5];
double b[5];
int i=0;
FILE* fileHandle = NULL;
fopen_s(&fileHandle, fileName.csv, "rb+");
for(i=0;i<5;i++)
{
 fscanf_s(fileHandle,"%u,%u",x[i],y[i]);
 a[i] = x[i]/(2^15);
 b[i] = y[i]/(2^15);
}
fclose(fileHandle);

但是從二進制文件中讀取的x[i]y[i]始終是3435973836。如何更改代碼以使其正常工作?

當數據為二進制時,無需使用fprintf和fscanf進行轉換。 您可以使用fread和fwrite讀寫數組。

如果您的數據交替使用a和b記錄,則最好以相同的方式組織變量:

struct ab {
     int a, b;
     } ab[5];

並一口氣閱讀

fread(ab, sizeof (int), 10, fileHandle);

然后以您喜歡的方式進行處理。

(有關詳細信息,請參見man fread和man fwrite)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM