可以分为绝对路径和相对路径:
绝对路径表示相对容易,例如:
pDummyFile = fopen("D:\\vctest\\glTexture\\texture\\dummy.bmp", "rb");
1、当前默认目录下:
pDummyFile = fopen("dummy.bmp", "rb");
VS2012中默认目录为exe所在目录。例如,把exe放在“abc”文件夹下,如果需要调用dll,只需要把dll与exe放在同一个目录,LoadLibrary的路径直接输入dll名即可。
pDummyFile = fopen("..\\texture\\dummy.bmp", "rb");
pDummyFile = fopen(".\\texture\\dummy.bmp", "rb");
获取当前目录
1、标准C++的方法。获取当前工作目录是使用函数:getcwd。cwd指的是“current working directory”。
函数说明:
函数原型:char* getcwd(char* buffer, int len);
参数:buffer是指将当前工作目录的绝对路径copy到buffer所指的内存空间, len是buffer的长度。
返回值:获取成功则返回当前工作目录(绝对路径),失败则返回false(即NULL)。
该函数所属头文件为<direct.h>
范例1:
#include <stdio.h> #include <direct.h> int main() { char *buffer; //也可以将buffer作为输出参数 if((buffer = getcwd(NULL, 0)) == NULL) { perror("getcwd error"); } else { printf("%s\n", buffer); free(buffer); } }
范例2:
#include<stdio.h> #include<direct.h> #include<stdlib.h> intmain(intargc,char*argv[]) { charpath[_MAX_PATH]; _getcwd(path,_MAX_PATH); printf("当前工作目录:\n%s\n",path); if((_chdir("d:\\visualc++"))==0) { printf("修改工作路径成功\n"); _getcwd(path,_MAX_PATH); printf("当前工作目录:\n%s\n",path); } else { perror("修改工作路径失败"); exit(1); } return0; }
2、MS的方法。GetCurrentDirectory和GetModuleFileName。
DWORD GetCurrentDirectory( DWORD nBufferLength, // size, in characters, of directory buffer LPTSTR lpBuffer // pointer to buffer for current directory );
HMODULE module = GetModuleHandle(0); CHAR buf[MAX_PATH]; GetModuleFileName(module, buf, sizeof buf);