ランダムなディレクトリとディレクトリツリー機能を作成します。

char gszAppPath[MAX_PATH]={0};  
char gszTempPath[MAX_PATH]={0};

//获取程序所在路径   
const char * GetAppPath()  
{  
    if (gszAppPath[0]==0)  
    {  
        ::GetModuleFileName(::GetModuleHandle(NULL), gszAppPath, sizeof(gszAppPath));  
  
        char *p=strrchr(gszAppPath,'\\');  
  
        if (p)  
        {  
            p++;  
            *p=0;  
        }  
    }  
  
    return gszAppPath;  
}  
//创建目录,如果路径里的目录不存在会自动创建   
BOOL CreateDirEx(const char *lpDir)  
{  
    BOOL bRet=FALSE;  
    char path[2048];  
  
    if (lpDir[1]==':' && lpDir[2]=='\\')  
    {  
        path[0]=lpDir[0];  
        path[1]=lpDir[1];  
        path[2]=lpDir[2];
		path[3]=0; 
  
        lpDir=lpDir+3;  
    }else{  
        strcpy(path,GetAppPath());  
    }  
  
    char *s=(char *)lpDir;  
    char *p;  
  
    while(*s)  
    {  
        p=strchr(s,'\\');  
        if (p==0) p=strchr(s,'/');  
  
        if (p)  
        {  
            char t=*p;  
            *p=0;  
            if (*s)  
            {  
                if (path[strlen(path)-1]!='\\') strcat(path,"\\");  
                strcat(path,s);  
                bRet=CreateDirectory(path,NULL);  
            }  
            *p=t;  
            s=p+1;  
  
            while(*s=='\\' || *s=='/')  
            {  
                s++;  
            }  
  
        }else{  
            if (*s)  
            {  
                if (path[strlen(path)-1]!='\\') strcat(path,"\\");  
                strcat(path,s);  
                bRet=CreateDirectory(path,NULL);  
            }  
            break;  
        }  
    }  
  
    return bRet;  
}  
//根据文件的完整路径创建目录   
BOOL CreateDirFromPathFile(const char *lpPathFile)  
{  
    BOOL bRet=FALSE;  
    char ch=0;  
    char *p=strrchr(lpPathFile,'\\');  
    char *p2=strrchr(lpPathFile,'/');  
  
    if (p<p2)  
    {  
        p=p2;  
    }  
  
    if (p)  
    {  
        ch=*p;  
        *p=0;  
        bRet=CreateDirEx(lpPathFile);  
        *p=ch;  
    }  
  
    return bRet;  
}  
//获取一个随机字符串名   
void GetRandName(char *RandName, unsigned int max_len)  
{  
    for (unsigned int i=0;i<max_len-1;i++)  
    {  
        RandName[i]='A'+rand()%26;  
    }  
  
    RandName[i]=0;  
  
    TRACE("RandName:%s",RandName);  
}  
//创建一个随机的临时目录   
BOOL CreateTempPath()  
{  
    BOOL bRet=FALSE;  
    char RandName[21];  
  
    for (n=0;n<10 &&!bRet; n++)
    {
        memset(gszTempPath,0,sizeof(gszTempPath));
        if (::GetTempPath(MAX_PATH, gszTempPath))
        {
            ::GetLongPathName(gszTempPath,gszTempPath,sizeof(gszTempPath));
            TRACE("gszTempPath:%s", gszTempPath);
            GetRandName(RandName,sizeof(RandName));
            strcat(gszTempPath, RandName);
            strcat(gszTempPath, "\\");
            TRACE("Create Rand Temp Path: %s", gszTempPath);
            bRet=CreateDirEx(gszTempPath);
        }
    }
  
    if (bRet)  
    {  
        TRACE("目录创建成功");  
    }else{  
        TRACE("目录创建失败");  
    }  
  
    return bRet;  
}  


 

84元記事公開 ウォン称賛15 ビューに14万+を

おすすめ

転載: blog.csdn.net/TDGX2004/article/details/7086493