Задать вопрос
  • Как убрать предупреждение "F может быть равно NULL"?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    --  FILE* F = NULL;
    --  fopen_s(&F, "out1.txt", "w");
    ++  FILE * F;
    ++  errno_t err;
    ++  err = fopen_s(&F, "out1.txt", "w");
    ++  if (err != 0) {
    ++      printf_s("Ошибка создания файла 'out1.txt': %d\n", err);
    ++      return;
    ++  }
    Ответ написан
    Комментировать
  • Как убрать предупреждение "F может быть равно NULL"?

    TrueBers
    @TrueBers
    Гуглю за еду
    Как минимум, не мешать Си и Си++, а писать на чём-то одном, и различать их.
    Во-вторых, зачем от предупреждения избавляться? Его нужно понять, почему оно появляется. Когда будет понимание, тогда всё станет на свои места.

    Достаточно предположить, что функция fopen_s внезапно не сможет открыть файл и вернёт ошибку. Допустим, файла не существует, или на его открытие нет прав у пользователя. Ты же не проверяешь возврат результата из функции открытия и пытаешься что-то записать в F, даже если функция не смогла открыть файл и вернула ошибку. А когда она вернёт её, переменная F останется нулевыем указателем или, в первом твоём случае, вообще будет обращение к неинициализированной переменной, где ты получишь неопределённое поведение. Вот оно и ругается на эту ветку развития событий.

    Добавь проверки на возвращаемые значения функций, и предупреждение пропадёт.
    Ответ написан
    Комментировать