Вы можете разместить файл в любом месте.
Если ваш рабочий каталог, скажем, «./Documents/some_folder» (рабочий каталог здесь, где ваш исполняемый файл (обычно называется «a.out»).") найден).Затем вы можете поместить файл в «some_folder» и ссылаться на него так же, как вы делаете это аналогично коду в вашем вопросе:
fopen("file.txt", "r");
В качестве альтернативы, если файл находится в каталоге внизу вдерево каталогов (относительно исполняемого файла), например «./Documents/some_folder/another_folder», тогда вы можете получить доступ к файлу следующим образом:
fopen("another_folder/file.txt", "r");
Так как в вашем примере кода вы используете переменную, "root", чтобы сохранить массив символов имени файла:
fopen(root, "r");
Затем вы можете обновить массив символов, чтобы он содержал любые необходимые каталоги перед ним (или создать массив символов tmp, если вы нене хочу редактировать "root").