Я пытаюсь написать программу, чтобы получить путь к папке, из которой она запущена (в Windows).
Возможны две интерпретации: Папка, в которой хранится исполняемый файлв (что отражено в вашем коде) или в текущем рабочем каталоге (что не обязательно совпадает, но я бы понял ...) Для последнего есть еще одна функция Windows API для.
char path[MAX_PATH];
GetModuleFileName(NULL, path, MAX_PATH);
Редактировать: as PaulMcKenzie , обозначенный в его комментарии: уже есть функция PathRemoveFileSpec, которая устарела, хотя вместо нее следует использовать PathCchRemoveFileSpec :
PathCchRemoveFileSpec(path, sizeof(path));
Сохраняя предыдущий ответ (только для лучшего понимания):
OK, так как GetModuleFileName
возвращает полный путь, вы получаете что-то вроде:
c:\some\path\to\your\file.exe
Все, что вам нужно сделать сейчас, это найтирасположение последней косой черты:
char* end = strrchr(path, '\\');
// actually cannot be nullptr, as path is fully qualified, but still for security:
if(end)
{
// cut off the rest...
*end = 0; // new end, null character denotes it...
}
else
{
// something has badly gone wrong...
}