실행 파일과 동일한 디렉토리에있는 일부 리소스를 사용하는 C 프로그램이 있습니다. 코드에서 사용하는 상대 경로가 실행 파일이있는 경로가 아니기 때문에 임의의 작업 디렉터리 (프로그램이있는 디렉터리가 아닌)에서 프로그램을 실행하면 리소스가로드되지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?C의 상대 경로
Q
C의 상대 경로
2
A
답변
3
인수와 중 하나로 프로그램에 자원을 포함하는 디렉토리의 경로 전달합니다
- 변화 디렉토리에 프로세스의 현재 디렉토리 (Windows에서 유닉스에
chdir()
및SetCurrentDirectory()
), 또는 리소스에 - 구조 절대 경로
는 질문 sugges에 주석으로, 윈도우 인 경우 ts이면 GetModuleFileName()
을 사용하여 exe
의 경로를 가져올 수 있으며이 경로에서 디렉토리를 추출하고 프로그램에 인수를 제공하지 않아도됩니다. 그런 다음 두 가지 옵션 중 하나를 선택하면 프로그램을 어디서나 실행하고 리소스를 찾을 수 있습니다. 난 그냥 그랬던 것처럼 앞으로이 오래된 질문에 일이있는 사람들을위한
0
:
이 프로그램은 (적어도 리눅스에서)이 int main
인수 목록의 첫 번째 인수로 호출 된 명령을 유지합니다.
이 예제에서 두 개의 디렉토리를 아래로 드릴 다운하여 프로그램에 연결하면 다음 호출 명령 [email protected]:~$ ./foo/bar/awesome_program.x86_64
이 생성됩니다.
프로그램 (아래 코드)은 ./foo/bar/awesome_program.x86_64
을 인쇄합니다.
문자열을 변수로 사용하기 때문에 상대적 경로를 구성하는 것이 더 간단해야하며 해당 문자열의 끝 부분 만 실행 파일에 상대적인 경로로 대체해야합니다.
작업 코드 :
#include <stdio.h>
int main (int argc, char **argv)
{
printf("calling path: %s\n", argv[0]);
return 0;
}
관련 문제
- 1. 경로 포함 - 상대 경로
- 2. 상대 경로
- 3. 상대 경로
- 4. 상대 경로
- 5. VB.NET의 절대 경로 상대 경로
- 6. 크롤러, 절대 경로 상대 경로
- 7. C의 _fullpath은() 잘못된 경로
- 8. 리소스 파일의 상대 경로?
- 9. JavaScript에서 이미지의 상대 경로
- 10. .NET에서 compileroptions의 상대 경로
- 11. Uri을 사용하는 상대 경로
- 12. URL에 상대 경로 해석하기
- 13. 다른 서버의 상대 경로
- 14. Winforms의 상대 경로
- 15. 상대 파일 경로
- 16. PathCchAppend와 상대 경로
- 17. Response.AddHeader를 사용하는 상대 경로
- 18. OBR 저장소의 상대 경로?
- 19. Zend_framework - 이미지의 상대 경로
- 20. settings.py의 상대 경로 settings.py에서
- 21. OSGi 번들의 상대 경로
- 22. Visual Studio 상대 경로
- 23. 상대 경로 정규식
- 24. 얻기 상대 경로
- 25. App.config 상대 경로
- 26. t SQL의 상대 경로?
- 27. 프로그램은 상대 경로
- 28. robots.txt 및 상대 경로
- 29. 바람둥이 상대 경로 설정
- 30. 상대 경로 및 'fopen'
음, 절대 경로를 사용합니까? –
@KingsIndian : 실행 파일이 어디에서 끝나는지 어떻게 알 수 있습니까? 소스는 exe 폴더에 상대적입니까? –
글쎄, 확실히 그 대답은 그렇지만 사용자가 프로그램의 디렉토리로 변경할 수 없다. 실제 경로를 검색하는 일종의 Windows API 함수로 모든 경로를 하드 코딩하지 않는다면 ... – Jori