Я пытаюсь просто записать массив значений с плавающей запятой в файл и затем прочитать его обратно.
Я пытался записать его непосредственно из массива, но при чтении обратно я продолжаю сталкиваться с проблемой для массивов длиной более 153. В примере кода для ясности записывается каждое значение с плавающей запятой по порядку.
Для значений с индексом, большим или равным 153, они имеют значение 153,0, где они должны быть 153,0, 154,0, 155,0, ...
Почему этот код не работает для меня?
int length = 160;
char* fileName = "testFile.dat";
// Write data to file
FILE* file = fopen (fileName, "w");
for(int i = 0; i< length; i++){
// We are just storing the indices, so value at i is equal to i
float f = (float) i;
fwrite(&f, sizeof(float), 1, file);
}
fclose(file);
// Read data from file into results array
file = fopen(fileName, "r");
float* results = new float[length];
for(int i = 0; i< length; i++){
float f;
fread(&f, sizeof(float), 1, file);
results[i] = f;
}
fclose(file);
// Now check data in results array
bool fail = false;
for(int i = 0; i< length; i++){
if(results[i]!=(float)i){
fail = true; // This should not be hit, but it is!
}
}
delete [] results;
Спасибо,
Dave