C/C++创建多级目录函数,支持windows和linux
2012-07-03 10:03
597 查看
转载自:http://tianyou8.blog.hexun.com/57206664_d.html
1。首先请加上这些预编译
2。函数体
由于原作者的对源字符串进行了修改,所以不适合直接传递字符串常量,否则程序崩溃。故修改如下:
int CreatDir(char *pDir)
{
int i = 0;
int iRet;
int iLen;
char* pszDir;
if(NULL == pDir)
{
return 0;
}
pszDir = strdup(pDir);
iLen = strlen(pszDir);
// 创建中间目录
for (i = 0;i < iLen;i ++)
{
if (pszDir[i] == '\\' || pszDir[i] == '/')
{
pszDir[i] = '\0';
//如果不存在,创建
iRet = ACCESS(pszDir,0);
if (iRet != 0)
{
iRet = MKDIR(pszDir);
if (iRet != 0)
{
return -1;
}
}
//支持linux,将所有\换成/
pszDir[i] = '/';
}
}
iRet = MKDIR(pszDir);
free(pszDir);
return iRet;
}
需要包含头文件:
#include <stdlib.h>
#include <string.h>
1。首先请加上这些预编译
#ifdef _WIN32 #include <direct.h> #include <io.h> #elif _LINUX #include <stdarg.h> #include <sys/stat.h> #endif #ifdef _WIN32 #define ACCESS _access #define MKDIR(a) _mkdir((a)) #elif _LINUX #define ACCESS access #define MKDIR(a) mkdir((a),0755) #endif
2。函数体
INT CreatDir(char *pszDir) { INT32 i = 0; INT32 iRet; INT32 iLen = strlen(pszDir); //在末尾加/ if (pszDir[iLen - 1] != '\\' && pszDir[iLen - 1] != '/') { pszDir[iLen] = '/'; pszDir[iLen + 1] = '\0'; } // 创建目录 for (i = 0;i < iLen;i ++) { if (pszDir[i] == '\\' || pszDir[i] == '/') { pszDir[i] = '\0'; //如果不存在,创建 iRet = ACCESS(pszDir,0); if (iRet != 0) { iRet = MKDIR(pszDir); if (iRet != 0) { return -1; } } //支持linux,将所有\换成/ pszDir[i] = '/'; } } return 0; }
由于原作者的对源字符串进行了修改,所以不适合直接传递字符串常量,否则程序崩溃。故修改如下:
int CreatDir(char *pDir)
{
int i = 0;
int iRet;
int iLen;
char* pszDir;
if(NULL == pDir)
{
return 0;
}
pszDir = strdup(pDir);
iLen = strlen(pszDir);
// 创建中间目录
for (i = 0;i < iLen;i ++)
{
if (pszDir[i] == '\\' || pszDir[i] == '/')
{
pszDir[i] = '\0';
//如果不存在,创建
iRet = ACCESS(pszDir,0);
if (iRet != 0)
{
iRet = MKDIR(pszDir);
if (iRet != 0)
{
return -1;
}
}
//支持linux,将所有\换成/
pszDir[i] = '/';
}
}
iRet = MKDIR(pszDir);
free(pszDir);
return iRet;
}
需要包含头文件:
#include <stdlib.h>
#include <string.h>
相关文章推荐
- C/C++创建多级目录函数,支持windows和linux
- C/C++创建目录函数,支持windows和linux
- linux c 创建多级目录函数实现 支持绝对路径和相对路径
- VMware下的Linux系统中Windows的共享目录,不支持创建软连接
- VMware下的Linux系统中Windows的共享目录,不支持创建软连接
- C++Windows下创建多级目录
- 支持Windows和Linux的文件目录创建和删除操作
- VMware下的Linux系统中Windows的共享目录,不支持创建软连接
- 一个可以自动创建多级目录的函数
- C++创建多级目录代码
- Linux一次创建多级目录
- c++创建多级目录
- windows平台下一次创建多级目录
- C/C++遍历目录下的所有文件(Windows/Linux)
- c++创建多级目录
- 常用函数之检测目录、多级目录创建
- C++ 创建多级目录
- c++循环创建多级目录
- C++ 创建多级目录
- windows c++程序员开始用linux编程(二)创建新进程