Не удается открыть файл в C - Ошибка при открытии файла в C - PullRequest
0 голосов
/ 16 января 2020

Основная функция, открывающая файл, находится в каталоге «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\n");
    }
        printf("Reading..\n");
  fclose(file[1]);

Ответы [ 2 ]

1 голос
/ 16 января 2020

Согласно 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 создал копию в папке отладки.

enter image description here

0 голосов
/ 16 января 2020

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

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

...