回答:
あなたは見ましたgetcwd()
か?
#include <unistd.h>
char *getcwd(char *buf, size_t size);
簡単な例:
#include <unistd.h>
#include <stdio.h>
#include <limits.h>
int main() {
char cwd[PATH_MAX];
if (getcwd(cwd, sizeof(cwd)) != NULL) {
printf("Current working dir: %s\n", cwd);
} else {
perror("getcwd() error");
return 1;
}
return 0;
}
int main()
必要がありますint main(void)
。
char cwd[PATH_MAX+1]
です。または、バッファに煩わされずchar *buf=getcwd(NULL,0);
、完了したときにfree(buf)
(POSIX.1-2001現在)
のマニュアルページを調べてくださいgetcwd
。
man 3 getcwd
。冗談はさておき、このページは'08からのものです。SOの慣例は異なりました。
質問はUnixとタグ付けされていますが、ターゲットプラットフォームがWindowsの場合にも人々はそれにアクセスできます。Windowsの答えはGetCurrentDirectory()
関数です。
DWORD WINAPI GetCurrentDirectory(
_In_ DWORD nBufferLength,
_Out_ LPTSTR lpBuffer
);
これらの回答は、CコードとC ++コードの両方に適用されます。
別の質問へのコメントでuser4581301によって提案され、Google検索「site:microsoft.com getcurrentdirectory」で現在の最上位の選択肢として確認されたリンク。
#include <stdio.h> /* defines FILENAME_MAX */
//#define WINDOWS /* uncomment this line to use it for windows.*/
#ifdef WINDOWS
#include <direct.h>
#define GetCurrentDir _getcwd
#else
#include <unistd.h>
#define GetCurrentDir getcwd
#endif
int main(){
char buff[FILENAME_MAX];
GetCurrentDir( buff, FILENAME_MAX );
printf("Current working dir: %s\n", buff);
return 1;
}
現在のディレクトリ(ターゲットプログラムを実行する場所)を取得するには、Visual StudioとLinux / MacOS(gcc / clang)の両方(CとC ++の両方)で機能する次のサンプルコードを使用できます。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#if defined(_MSC_VER)
#include <direct.h>
#define getcwd _getcwd
#elif defined(__GNUC__)
#include <unistd.h>
#endif
int main() {
char* buffer;
if( (buffer=getcwd(NULL, 0)) == NULL) {
perror("failed to get current directory\n");
} else {
printf("%s \nLength: %zu\n", buffer, strlen(buffer));
free(buffer);
}
return 0;
}