#include<stdio.h>
#include<malloc.h>
int getData(float **data_buffer,int *data_size) {
//*data_buffer中存的是指针data_buffer的地址;
FILE *fp;
int error=0;
fp = fopen("test.bin", "rb");
if (fp == NULL) {
printf("Open data file failed!\n");
return -1;
}
if (*data_size == 0) {
fseek(fp, 0, SEEK_END);
*data_size = ftell(fp);
fclose(fp);
return 0;
}
*data_buffer = (float *)malloc(*data_size);
fseek(fp, 0, SEEK_SET);
error = fread(*data_buffer, sizeof(float), *data_size / sizeof(float), fp);
if (error != *data_size / sizeof(float)) {
printf("Read data failed!\n");
return -1;
}
fclose(fp);
return 0;
}
int check(float *data_test) {
FILE *fp;
float *data_buffer;
int data_size;
int error = 0;
fp = fopen("test.bin", "rb");
if (fp == NULL) {
printf("Open data file failed!\n");
return -1;
}
fseek(fp, 0, SEEK_END);
data_size = ftell(fp);
data_buffer = (float *)malloc(data_size);
fseek(fp, 0, SEEK_SET);
error = fread(data_buffer, sizeof(float), data_size / sizeof(float), fp);
if (error != data_size / sizeof(float)) {
printf("Read data failed!\n");
return -1;
}
for (int i = 0; i < data_size / sizeof(float); i++) {
if (data_test[i] - data_buffer[i] == 0) {
}
else {
return -2;
}
}
fclose(fp);
return 0;
}
int main() {
float *data_buffer=NULL;
int data_size = 0;
char error = 0;
error = getData(&data_buffer, &data_size);
if (error!=0) {
printf("Get data_size failed!\n");
return -1;
}
error = getData(&data_buffer, &data_size);
if (error != 0) {
printf("Read data failed!\n");
return -1;
}
error = check(data_buffer);
if (error == -2) {
printf("Read failed!\n");
}
else
printf("successed!\n");
free(data_buffer);
return 0;
}