Robię program w C, w którym muszę pobrać katalog, z którego program jest uruchamiany. Ten program jest napisany dla komputerów z systemem UNIX. Patrzyłem na opendir()
i telldir()
, ale telldir()
zwraca a off_t (long int)
, więc to naprawdę mi nie pomaga.
Jak mogę uzyskać bieżącą ścieżkę w ciągu (tablica znaków)?
c
unix
working-directory
Charles B.
źródło
źródło
int main()
powinno byćint main(void)
.char cwd[PATH_MAX+1]
. Lub jeśli nie możesz się przejmować buforami tylkochar *buf=getcwd(NULL,0);
i kiedy skończyszfree(buf)
(stanWyszukaj stronę podręcznika dla
getcwd
.źródło
man 3 getcwd
. Żarty na bok, nie bądź anarchonistyczny, ten post pochodzi z 2008 roku, konwencje SO były inne.Chociaż pytanie jest oznaczone jako Unix, ludzie mogą je również odwiedzać, gdy ich platformą docelową jest Windows, a odpowiedzią dla systemu Windows jest
GetCurrentDirectory()
funkcja:Te odpowiedzi dotyczą zarówno kodu C, jak i C ++.
Link zasugerowany przez użytkownika4581301 w komentarzu do innego pytania i zweryfikowany jako aktualnie najlepszy wybór w wyszukiwarce Google „site: microsoft.com getcurrentdirectory”.
źródło
źródło
Zauważ, że
getcwd(3)
jest również dostępny w libc: getcwd (3) Microsoftu i działa w taki sam sposób, jakiego można się spodziewać.Musi łączyć się z
-loldnames
(oldnames.lib, co w większości przypadków odbywa się automatycznie) lub używać_getcwd()
. Wersja bez prefiksu jest niedostępna w systemie Windows RT.źródło
Aby uzyskać bieżący katalog (w którym wykonujesz program docelowy), możesz użyć następującego przykładowego kodu, który działa zarówno dla Visual Studio, jak i Linux / MacOS (gcc / clang), zarówno C, jak i C ++:
źródło