Проблемы с сохранением массива с плавающей точкой в ​​двоичный файл и чтением обратно (C ++) - PullRequest
2 голосов
/ 13 января 2011

Я пытаюсь просто записать массив значений с плавающей запятой в файл и затем прочитать его обратно.
Я пытался записать его непосредственно из массива, но при чтении обратно я продолжаю сталкиваться с проблемой для массивов длиной более 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

1 Ответ

3 голосов
/ 13 января 2011
FILE* file = fopen (fileName, "wb");
FILE* file = fopen (fileName, "rb");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...