实现文件夹创建的C子函数并有详解
来源:互联网 发布:淘宝上的天王表旗舰店 编辑:程序博客网 时间:2024/06/06 07:50
该子函数实现创建一个子文件夹的功能。
调用该函数的时候参数为要创建的文件夹的路径和名字,比如要创建的目标文件夹为:E:\\test\\
则调用该函数的时候可以这样写:char* outDir="E:\\test\\";
recursive_mkdir(outDir);
函数recursive_mkdi:
int recursive_mkdir( char *dir )
{//分解路径名E:\\AA\\BB\\CC\\
//
std::string str = dir;
int index = 0;
int i = 0;
while(1)
{
std::string::size_type pos = str.find("\\",index); //返回的参数是查找到的该字符的位置,若没有则返回-1
std::string str1;
str1 = str.substr(0,pos); //函数substr是从字符串中提取子字符串
if( pos != -1 && i > 0 )
{
if (_access(str1.c_str(),0)==-1)
{
_mkdir(str1.c_str()); //若不存在该文件夹str1.c_str(),就创建一个
}
}
if( pos==-1 )
{
break;
}
i ++;
index = pos+1;
}
return 0;
}
重点函数详解:
注意这里将str=outDir是一个字符串,char* outDir="E:\\test\\";
str.find("\\",index)在字符串函数中find函数就是要实现在字符串中寻找某个字符,若是找不到该字符就会返回一个特殊值为npos,npos被赋值为-1。所以这句话的意思是要从str中找到这个字符“\\”,第一个参数就是要寻找的字符,第二个参数是从什么位置开始寻找,默认的是从0位置开始寻找。返回的参数pos的意思是在什么位置第一次发现了这个字符。在这个例子中返回的是pos=2。
str1 = str.substr(0,pos);字符串函数substr实现了从某个字符串中提取子字符串,这里的两个参数为:第一个参数是要求从什么位置开始,第二个参数是要求提取的子字符串长度为多少。在例子中第一次提取的就是:E:。
按照例子的执行过程:
首先检测\\的位置是2,然后str1是E:\\,这个文件夹肯定是存在的,所以i++,index++。
接着从t所在的位置开始检测\\,这时候返回的 位置是7,str1变为E:\\test,这时候就要检测这个文件夹是否存在,
若是不存在就由函数_mkdir来创建。
- 实现文件夹创建的C子函数并有详解
- linux c创建文件夹,并在文件夹中创建文件
- C语言中的子函数和主函数有什么联系啊?它们是怎么编写的?
- 创建Service程序并监控有界面的进程实现
- c语言实现文件夹的创建和删除
- 子函数实现链式队列 的 操作,创建、入队、出队、退出。
- C#创建文件夹实现方法详解
- C调用子函数所征用的寄存器
- 创建并设置文件夹的NTFS权限
- keras实现图像语义分割的子函数
- C#.net获取指定文件夹下的所有jpg文件,并按文件创建时间排序
- C#.net获取指定文件夹下的所有jpg文件,并按文件创建时间排序
- 写一主函数输入一数组,写一子函数实现对该数组的冒泡排序并输出。
- 创建文件夹 并 实现文件(夹)拷贝
- c++判断文件夹是否存在并创建,文件夹创建以后重命名,并移除原来的文件夹
- 通过子函数调用创建链表的三种方式
- C语言创建删不掉的文件夹
- // c 程序设计设计 教材例8.16 指向函数的指针。 实现同一函数,根据参数执行不同的子函数。
- 自动生成makefile的工具?GNU Automake;cmake;
- keyword not supported data source 问题解决办法
- Java(Android)对文件全文生成MD5摘要
- 短地址转换原理
- [Mklink,Junction,Icacls] 利用批处理生成用户配置文件中的 Junction
- 实现文件夹创建的C子函数并有详解
- 浅谈 JavaScript 编程语言的编码规范
- zoj 3686 A Simple Tree Problem
- Oracle字符集的查看查询和Oracle字符集的设置修改 .
- Admob提款过程
- Linux内核的动态电压和电流控制接口(regulator)
- 铁道部分流员工被承诺将按公务员待遇退休
- 区别输入的字符是英文的还是中文 或者是 特殊字符
- Android开发心得-使用File ExPlorer无法访问系统内部文件