Невозможно открыть файл в C- Ошибка при открытии файла в C

Основная функция, открывающая файл, находится в каталоге «project». Затем у меня есть каталог "cmake-build-bug" (находится в каталоге "project"), где находится файл "data.txt". Я хочу прочитать его, но по какой-то причине он продолжает писать Error to open file . Я никогда не понимаю, как написать правильный путь к файлу. Или есть другая проблема, которая дает ошибку?

  FILE *file[2] ;
  char *fileName2 = "data.txt";
    file[1] = fopen(fileName2, "r");
    if (file[1] == NULL){
        printf("Error to open file
");
    }
        printf("Reading..
");
  fclose(file[1]);

Всего 2 ответа


Согласно http://man7.org/linux/man-pages/man3/fopen.3.html первый параметр - это путь, а не имя файла, как полагают многие. Давайте предположим, что c: your_ project a_subfolder data.txt - это путь, просто запомните, что является escape-символом, поэтому я считаю, что в общем случае, когда файл находится в другой папке, вы можете попробовать char *fileName2 = "c:\your_ project\a_sub_folder\data.txt"

Просто следите за реальным путем к файлу. Cmake имеет тенденцию создавать папки для размещения исполняемых элементов. Например, посмотрите на этот случай, когда файл находился в локальной папке, а cmake создал копию в папке отладки.

введите описание изображения здесь


При использовании IDE (а так как у вас есть каталог cmake-build-debug то, я думаю, вы используете IDE CLion), рабочий каталог по умолчанию редко бывает ожидаемым. А для CLion кажется, что это не то место, где вы сейчас храните файл data.txt . (Я не помню по умолчанию для CLion.)

Предполагая, что CLion, вам нужно отредактировать «Конфигурацию запуска / отладки» для программы (меню «Выполнить» и пункт «Редактировать конфигурацию») и установить «Рабочий каталог», где находится файл data.txt .


Есть идеи?

10000