Есть ли способ использовать fopen () для чтения / записи файла, когда изменяется каталог файлов, но без изменения каталога вручную в реальном коде? - PullRequest
0 голосов
/ 25 мая 2019

Я знаю, как читать и записывать в файл, но я включаю fopen () в мой университетский проект, и мы должны отправить все, что требуется для запуска программы, лектору. Но если имена каталогов изменятся, есть ли вероятность, что моя программа не сможет прочитать файл?

int main(void)
{

    FILE * fptr;

    fptr = fopen("C:\\Users\\username\\Documents\\folder\\filename.txt", "r");

    char oneline[MAX_LEN];

    while (!feof(fptr))
    {
        while (fgets(oneline, sizeof(oneline), fptr) != NULL)
            printf("%s", oneline);
    }

    fclose(fptr);

    return 0;
}

Например, если мой профессор скачивает файл, и он хранится в загрузках вместо документов, таких как каталог, который я написал, разве файл не сможет быть прочитан? И если да, то есть ли способ заставить мой код «адаптироваться» к изменениям в каталоге?

1 Ответ

0 голосов
/ 25 мая 2019

Использовать относительные пути.

    //if your executable and the textfile are in the same directory just use
    fptr = fopen("filename.txt", "r");
    //if e.g. your executable is in Documents use
    fptr = fopen("folder//filename.txt", "r");

кстати, используйте "..", чтобы попасть в родительский каталог.

В качестве альтернативы, если вы хотите изменить путь во время выполнения, сохраните его в строке ac (массив символов / указатель char), чтобы вы могли легко заменить / изменить его, просто установив указатель char на нужную строку.

char * path = "your path here";
char * someotherpath = "other path (maybe from userinput)"
// you can easily change your the path
if(some condtion)
    path = someotherpath;
fptr = fopen(path, "r");

Должен автоматически определяться абсолютный или относительный путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...