Saya membuat program C di mana saya harus mendapatkan direktori tempat program dimulai. Program ini ditulis untuk komputer UNIX. Saya telah melihat opendir()
dan telldir()
, tetapi telldir()
mengembalikan off_t (long int)
, jadi itu benar-benar tidak membantu saya.
Bagaimana saya bisa mendapatkan jalur saat ini dalam string (array char)?
c
unix
working-directory
CharlesB
sumber
sumber
int main()
seharusnyaint main(void)
.char cwd[PATH_MAX+1]
. Atau jika Anda tidak dapat diganggu dengan buffer secara adilchar *buf=getcwd(NULL,0);
dan ketika Anda selesaifree(buf)
(pada POSIX.1-2001)Cari halaman manual untuk
getcwd
.sumber
man 3 getcwd
. Selain lelucon, jangan anarkonistik, posting ini dari '08, konvensi SO berbeda.Meskipun pertanyaannya ditandai Unix, orang juga bisa mengunjunginya ketika platform target mereka adalah Windows, dan jawaban untuk Windows adalah
GetCurrentDirectory()
fungsinya:Jawaban ini berlaku untuk kode C dan C ++.
Tautan yang disarankan oleh pengguna4581301 dalam komentar ke pertanyaan lain, dan diverifikasi sebagai pilihan teratas saat ini dengan pencarian Google 'situs: microsoft.com getcurrentdirectory'.
sumber
sumber
Catatan yang
getcwd(3)
juga tersedia di libc Microsoft: getcwd (3) , dan berfungsi seperti yang Anda harapkan.Harus ditautkan dengan
-loldnames
(oldnames.lib, yang dilakukan secara otomatis di sebagian besar kasus), atau gunakan_getcwd()
. Versi yang tidak diperbaiki tidak tersedia di bawah Windows RT.sumber
Untuk mendapatkan direktori saat ini (di mana Anda menjalankan program target Anda), Anda dapat menggunakan kode contoh berikut, yang berfungsi untuk Visual Studio dan Linux / MacOS (gcc / dentang), baik C dan C ++:
sumber