解决“_mkdir无法识别空格目录“问题

83 篇文章 0 订阅

    在C++编程里,有时候需要创建一个文件夹,通常使用库函数_mkdir(const char* dirname)来新建一个文件夹,该库函数每次只能创建一个文件夹,不能级联创建。若要级联创建文件,则请用递归方式或者for循环方式调用_mkdir()。

#include <direct.h>  //头文件

//功能:目录创建函数
//备注:每次只能创建一个文件夹,对正斜杠/、反斜杠\都支持,反斜杠需要添加一个转义字符\,即反斜杠路径为\\,正斜杠的路径为/。
int _mkdir(
   const char *dirname 
);

1、_mkdir()里的空格等效替换

    在_mkdir(const char* dirname)函数里,如果目录dirname包含空格,则直接调用_mkdir()函数会失败。这时候,就需要对空格进行转义,比如进行8进制转义,’ ’ 空格的ASCII是32,转换为8进制为40,然后再添加一个转义字符\,流程如下:

' ' == 32 (ASCII) == \40 (八进制)

    按Win+R快捷键 --》输入: calc --》切换到"程序员"模式,如图(1)、图(2)所示,点击[DEC]按钮,然后输入: 32, 可以看到32对应的OCT(即8进制)为40。

图(1) 按Win+R快捷键,输入: calc,然后回车

图(2) 右击三横图标--》选中"程序员",再点击左侧的[DEC],表示10进制

图(3) 输入:32 得到空格的8进制(OCT码)为40

2、创建目录

    MFC使用_mkdri()创建一个新目录,其示例代码如下:

#include <direct.h>

void CreateFolder(CString & strDir)
{	
    strDir.Trim();                     //去掉首尾制表符(\r\n\t等)
	strDir.Replace(_T(" "),_T("\40")); //替换目录里的空格	
	CStringA strPathA;
	strPathA = strDir;
	int ret = _mkdir(strPathA.GetString());
	if (ret == 0)
		AfxMessageBox(_T("创建成功!"));
	else
		AfxMessageBox(_T("创建失败!"));
}

    注意,如果要在系统盘C盘里,创建目录,则需要给当前用户添加读写权限,否则没有读写权限,则无法创建文件夹,如图(4)所示:

图(4) 要有写入权限,才能创建文件夹

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值