В-Почему fopen не работает?


У меня есть очень простой код:

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

int main (void)
    {
    FILE * file_ptr = NULL;

    file_ptr = fopen ("file.txt", "r");

    if (file_ptr == NULL)
        {
        puts ("Error!");
        return EXIT_FAILURE;
        }
    else
        {
        puts ("O.k.!");
        }

    return EXIT_SUCCESS;
    }

Вывод:

Error!

Почему fopen не работает? Файл не защищен, не открыт в другом месте и хранится в той же папке, что и *.exe этой программы. Я также попробовал его с указанием полного пути к файлу и с массивом, в котором хранится имя файла. Каждый раз, когда он выдает "Ошибка!".

Что происходит??

Я использую Eclipse Neon.2 Выпуск (4.6.2) с новейшим компилятором cygwin gcc в Windows 10 64 бит.

Спасибо за вашу помощь!

2 2

2 ответа:

Задача была решена путем замены fopen на

file_ptr = fopen("xxyyzzqq.txt", "w");

, а затем поиск на жестком диске, чтобы увидеть, где был создан файл.

Получается, что файл был создан в исходном каталоге проекта, а не в отладочном каталоге (где .exe-файл есть), в отличие от старой установки, которая использовала каталог debug в качестве рабочего каталога.

perror это может помочь.

FILE *file_ptr = fopen("file.txt", "r");
if (!file_ptr) {
  perror("fopen");
} else {
  printf("It's working!");
}

Аналогичный вопрос: fopen () не работает в C