Основная функция, открывающая файл, находится в каталоге «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
.