предупреждение: передача аргумента 1 'fscanf' отбрасывает квалификатор 'const' из целевого типа указателя

Я открываю файл, и он не изменится, поэтому я поставил перед ним ключевое слово const. Компилятор, однако, дает мне это предупреждение. Почему fscanf не принимает файлы const?

#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>

int main(void){
  const FILE *realNumbers=fopen("float.txt", "r");
  if(realNumbers==NULL){
    fprintf(stderr, "Could not open the file.
");
    return 1;
  }
  unsigned int realNumbersSize=1;
  float *realNumbersArray=malloc(realNumbersSize*sizeof(float));
  if(realNumbersArray==NULL){
    fprintf(stderr, "Could not allocate memory.
");
    return 2;  
  }
  for(int i=0;fscanf(realNumbers, "%f", &realNumbersArray[i])==1;i++){
    realNumbersSize++;
    realNumbersArray=realloc(realNumbersArray, realNumbersSize*sizeof(float));
    if(realNumbersArray==NULL){
      fprintf(stderr, "Could not reallocate memory.
");
      return 3;  
    }
  }
  free(realNumbersArray);
  fclose(realNumbers);
  return 0;
}

Всего 1 ответ


Ваш файл не изменится. Но FILE не ваш фактический файл. Это структура, которая отслеживает состояние файла относительно того, что вы сделали с ним в своем коде. Это не может быть fscanf как fscanf потребуется обновить его (например, для отслеживания позиции чтения). - кайлум


Есть идеи?

10000