C语言创建目录(文件夹)之mkdir

news2024/11/26 4:31:55

一、mkdir

说明:创建目录。
头文件库:

#include <sys/stat.h>
#include <sys/types.h>

函数原型:

int mkdir(const char *pathname, mode_t mode);

mode方式:可多个权限相或,如0755表示S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH

权限说明
S_IRWXU00700权限,代表该文件所有者拥有读,写和执行操作的权限
S_IRUSR(S_IREAD)00400权限,代表该文件所有者拥有可读的权限
S_IWUSR(S_IWRITE)00200权限,代表该文件所有者拥有可写的权限
S_IXUSR(S_IEXEC)00100权限,代表该文件所有者拥有执行的权限
S_IRWXG00070权限,代表该文件用户组拥有读,写和执行操作的权限
S_IRGRP00040权限,代表该文件用户组拥有可读的权限
S_IWGRP00020权限,代表该文件用户组拥有可写的权限
S_IXGRP00010权限,代表该文件用户组拥有执行的权限
S_IRWXO00007权限,代表其他用户拥有读,写和执行操作的权限
S_IROTH00004权限,代表其他用户拥有可读的权限
S_IWOTH00002权限,代表其他用户拥有可写的权限
S_IXOTH00001权限,代表其他用户拥有执行的权限

示例代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>

int checkMkdir(char *sPath);

int main()
{
	char sPath[256 + 1];

	memset(sPath, 0x00, sizeof(sPath));

	sprintf(sPath, "%s/%s", getenv("HOME"), "test/test/");
	
	if( 0 != checkMkdir(sPath))
	{
		printf("创建文件失败\n");
	}
	else
	{
		printf("创建文件成功\n");
	}

	return 0;
}



/*
 * 函数名称 checkMkdir
 * 函数功能 创建文件
 * 函数描述 传入一个文件所在的绝对路径 创建文件
 * 入    参 sPath 文件绝对路径
 * 返    回 SUCCESS return 0
 *          FAIL    return 非0
*/
int checkMkdir(char *sPath)
{
	int iRet = 0;                         /* 函数返回值 */
	char sFilePath[256 + 1];              /* 创建文件路径 */
	char sPathTmp[256 + 1];               /* 临时文件路径 */
	char *pDir = NULL;

	struct stat stFileStat;


	memset(sFilePath, 0x00, sizeof(sFilePath));
	memset(sPathTmp, 0x00, sizeof(sPathTmp));
	memset(&stFileStat, 0x00, sizeof(stFileStat));

	memcpy(sFilePath, sPath, sizeof(sFilePath));

	
	pDir = strtok(sFilePath, "/");
	strcat(sPathTmp, "/");
	strcat(sPathTmp, pDir);
	strcat(sPathTmp, "/");

	memset(&stFileStat, 0x00, sizeof(stFileStat));
	stat(sPathTmp, &stFileStat);

	if( !S_ISDIR(stFileStat.st_mode) )
	{
		iRet = mkdir(sPathTmp, S_IWUSR|S_IRUSR|S_IXUSR);
		if( -1 == iRet )
		{
			printf("mkdir path [%s] error [%ld]\n", sPathTmp, iRet);
			return iRet;
		
		}	
	}

	while( NULL != ( pDir=strtok(NULL, "/") ) )
	{
		strcat(sPathTmp, pDir);
		strcat(sPathTmp, "/");

		memset(&stFileStat, 0x00, sizeof(stFileStat));
		stat(sPathTmp, &stFileStat);

		if( !S_ISDIR(stFileStat.st_mode) )
		{
			iRet = mkdir(sPathTmp, S_IWUSR|S_IRUSR|S_IXUSR|S_IRGRP|S_IWGRP|S_IXGRP);
			if( -1 == iRet )
			{
				printf("mkdir path [%s] error [%ld]\n", sPathTmp, iRet);
				return iRet;
		
			}
		}
	}

	return iRet;
}

运行结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/859142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于熵权法对Topsis模型的修正

由于层次分析法的最大缺点为&#xff1a;主观性太强&#xff0c;影响判断&#xff0c;对结果有很大影响&#xff0c;所以提出了熵权法修正。 变异程度方差/标准差。 如何度量信息量的大小&#xff1a; 把不可能的事情变成可能&#xff0c;这里面就有很多信息量。 概率越大&…

Telerik Test Studio R2 2023 Crack

Telerik Test Studio R2 2023 Crack Telerik Test Studio是一款用于Web和桌面应用程序的端到端测试自动化工具&#xff0c;支持功能性UI、RESTful API和负载/性能测试。无论您是无代码还是使用TestStudio的基于代码的自动化功能&#xff0c;您都将始终获得最佳的应用程序质量和…

马来西亚的区块链和NFT市场调研

马来西亚的区块链和NFT市场调研 基本介绍 参考&#xff1a; https://zh.wikipedia.org/wiki/%E9%A9%AC%E6%9D%A5%E8%A5%BF%E4%BA%9A zz制度&#xff1a;联邦议会制 语言文字&#xff1a; 马来语 民族&#xff1a; 69.4%原住民&#xff08;土著&#xff09;&#xff0c;23.2%…

Android 取证之微信8.0.38版本数据库解密分析

0x01 前言 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 0x02 软硬件环境 app 版本&#xff1a;8.0.38 inject&#xff1a;frida …

统信UOS下eclipse使用lombok报错的问题

lombok不兼容问题 lombok不支持高版本jdk&#xff0c;本人在应用商店下载eclipse安装的&#xff0c;默认用的jdk17&#xff0c;不兼容lombok插件&#xff0c;需要调整eclipse.ini配置文件&#xff0c;如下&#xff1a; #/opt/apps/org.eclipse.java-ee/files/eclipse.ini -ja…

香港站群服务器为什么适合seo优化?

​  香港站群为什么适合seo优化?本文主要从以下四点出发进行原因阐述。 1.香港站群服务器的优势 2.香港站群服务器与国内服务器的对比 3.多IP站群服务器的优势 4.香港站群服务器在SEO优化中的注意事项 1.香港站群服务器的优势 香港站群服务器是为了满足企业SEO优化需求而提供…

iconfont 使用

官网地址 iconfont-阿里巴巴矢量图标库 常规操作&#xff1a;注册账号 首页 搜索想要的图片 加入购物车并添加项目没有就创建一个 在线生成链接 复制生成的css 在前端软件创建相关的wxss文件 全局 import "/static/iconfont/iconfont.wxss";page {height: 100%; }…

Jenkins 插件下载速度慢安装失败?这篇文章可能解决你头等难题!

Jenkins部署完毕&#xff0c;如果不安装插件的话&#xff0c;那它就是一个光杆司令&#xff0c;啥事也做不了&#xff01; 所以首先要登陆管理员账号然后点击系统管理再点击右边的插件管理安装CI/CD必要插件。 但是问题来了&#xff0c;jenkins下载插件速度非常慢&#xff0…

【腾讯云 Cloud Studio 实战训练营】用于编写、运行和调试代码的云 IDE泰裤辣

文章目录 一、引言✉️二、什么是腾讯云 Cloud Studio&#x1f50d;三、Cloud Studio优点和功能&#x1f308;四、Cloud Studio初体验&#xff08;注册篇&#xff09;&#x1f386;五、Cloud Studio实战演练&#xff08;实战篇&#xff09;&#x1f52c;1. 初始化工作空间2. 安…

(十)人工智能应用--深度学习原理与实战--模型的保存与加载使用

目的:将训练好的模型保存为文件,下次使用时直接加载即可,不必重复建模训练。 神经网络模型训练好之后,可以保存为文件以持久存储,这样下次使用时就不重新建模训练,直接加载就可以。TensorfLow提供了灵活的模型保存方案,既可以同时保存网络结构和权重(即保存全模型),也可…

这回稳了!电力巡检摄像头解决方案全新来袭

最近的狂飙成为大家的话题&#xff0c;现在是互联网的时代&#xff0c;想要的信息总能在互联网获取…这也是我一直喜欢分享科技话题给大家的原因。 疫情已经终于离我们而去&#xff0c;在这春回大地的时候&#xff0c;是时候要分享一下电力行业智能巡检的一些解决方案给大家。这…

从零开始学python(十六)爬虫集群部署

前言 今天讲述Python框架源码专题最后一个部分&#xff0c;爬虫集群部署&#xff0c;前面更新了十五个从零开始学python的系列文章&#xff0c;分别是&#xff1a; 1.编程语法必修篇 2.网络编程篇 3.多线程/多进程/协程篇 4.MySQL数据库篇 5.Redis数据库篇 6.MongoDB数据库篇 …

备战金九银十 I 没有自动化测试项目经验的测试人快快看过来!

学习自动化测试最难的是没有合适的项目练习。测试本身既要讲究科学&#xff0c;又有艺术成分&#xff0c;单单学几个 API 的调用很难应付工作中具体的问题。 你得知道什么场景下需要添加显性等待&#xff0c;什么时候元素定位需要写得更加优雅&#xff0c;为什么需要断言这个元…

idea 加入 .so文件

背景 做项目的时候&#xff0c;遇到需要查看native 方法 涉及到c源码的查看&#xff0c;因此需要加载.so文件去查看。 操作 idea-file-project structure 找到lib&#xff0c;把你的.so文件添加进来就可以啦 然后你就可以查看对应的源码了。

【WebService】使用postman调用WebService方法

1、需求 公司原来有一个项目使用的是WebService&#xff0c;想模拟一下怎么调用WebService的方法&#xff0c;使用postman调用怎么调用。 2、postman方式 接口&#xff1a;http://127.0.0.1:8080/SecurityWebService/SecurityCommand?wsdl 对应你的代码配置&#xff1a; …

Java课题笔记~ Response响应

1.响应消息格式 HTTP响应也由四个部分组成&#xff0c;分别是&#xff1a;状态行、消息报头、空行和响应正文。 响应消息&#xff1a;服务器端发送给客户端的数据 数据格式说明&#xff1a; 1. 响应行 ​ 1. 组成&#xff1a;协议/版本 响应状态码 状态码描述 ​ 2. …

差异性分析傻瓜版

path1输入你的第一个Excel path2输入你的第二个Excel DEG.dig <- function(path1,path2) { require(xlsx) require(tidyverse) require(limma) require(edgeR) E<- read.xlsx (path1,sheetIndex 1,header 1) %>% column_to_rownames(var &…

六、web应用程序技术——编码

文章目录 一、状态与会话二、编码方案2.1 URL编码2.2 Unicode编码2.3 HTML编码2.4 Base64编码2.5 十六进制编码 一、状态与会话 web应用程序服务器和客户端组件除了以各种方式进行数据交换和处理&#xff0c;应用程序还需要追踪每位用户通过不同的请求与应用程序交互的状态。例…

appuploader使用教程

转载&#xff1a;appuploader使用教程 目录 问题解决秘籍 登录失败 don’t have access,提示没权限或同意协议 上传后在app管理中心找不到版本提交 不是等待上传状态 提示已经上传过包 上传提示tcpPort or udpPorts错误 上传提示已经有进程在上传 保存上传专用密码提示…

Oracle 开发篇+Java通过DRCP访问Oracle数据库

标签&#xff1a;DRCP、Database Resident Connection Pooling、数据库驻留连接池释义&#xff1a;DRCP&#xff08;全称Database Resident Connection Pooling&#xff09;数据库驻留连接池&#xff08;Oracle自己的数据库连接池技术&#xff09; ★ Oracle开启并配置DRCP sq…