@dandropov95

В какой директории хранить файл для считывания из программы?

Подскажите в какую директорию класть файл для считывания, относительно проекта (VS) чтобы файл можно было открывать по пути "file_name.ext"?
Пробовал уже положить во все папки создаваемые студией, но файл все равно не открывается.
fopen("file.txt", "r")
А вот абсолютный путь если указать (например на диск C) то все работает.
fopen("c:\\file.txt", "r")
  • Вопрос задан
  • 244 просмотра
Пригласить эксперта
Ответы на вопрос 3
myjcom
@myjcom
С:\\Projects\\myProject\\Debug\\file.txt    == ..\\debug\\file.txt
С:\\Projects\\myProject\\Release\\file.txt  == ..\\release\\file.txt
С:\\Projects\\myProject\\Other\\file.txt    == ..\\other\\file.txt
С:\\Projects\\myProject\\file.txt           == ..\\file.txt
...
fopen("..\\file.txt", "r")


Мне нужно чтобы при передаче файла не нужно было писать какой либо длинный путь, а просто можно было бы передать имя файла.

spoiler
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <direct.h>

char* get_file_path(char* dir, char* fname)
{
    dir = _getcwd(dir, MAX_PATH);
    strcpy(&dir[strlen(dir)], "\\");
    strcpy(&dir[strlen(dir)], fname);
    return dir;
}

int main(int argc, char* argv[])
{
    /* uncomment
    if(argc != 1)
    {
        printf("error: usage myapp.exe file.txt\n");
        return -1;
    }
    uncomment */
    char  dir[MAX_PATH];
    char* file = "file.txt";//test
    char* full_file_name = get_file_path(dir, file);// get_file_path(dir, argv[0])
    FILE* fp = fopen(full_file_name, "r");

    if(fp)
    {
        printf("Open\n");
        fclose(fp);
    }

    printf("%s", full_file_name);
    free(full_file_name);
    return 0;
}

gcc -static
Ответ написан
@res2001
Developer, ex-admin
Передавайте путь к файлу в параметре и кладите куда угодно.
Ответ написан
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
Без указания пути программа считает, что файл находится в том каталоге, который сейчас текущий для нее. Причем это далеко не всегда тот каталог, который подразумеваете Вы :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы