C语言之mkdtemp()特定占位符:XXXXXX 用法实例(八十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:C语言之mkdtemp()固定占位符"XXXXXX"用法实例

2.mkdtemp函数介绍

  • Linux 系统中的 mkdtemp 函数是一个非常有用的 C 语言函数,用于创建一个临时目录。这个函数可以简化开发过程,特别是在需要频繁创建临时目录的情况下。在本文中,我们将介绍 mkdtemp 函数的基本概念、用法和返回值。
  1. 基本概念

mkdtemp 函数定义在 unistd.h 头文件中,其作用是根据给定的模板字符串创建一个临时目录。这个目录会被创建在全局目录 /tmp 中,除非设置了环境变量 TMPDIR。模板字符串通常包含一个或多个 X 字符,这些字符将在创建目录时被随机生成的字符序列替换。

  1. 函数原型

char *mkdtemp(char *template);

  1. 参数

template:指向一个字符串的指针,该字符串包含一个模板,其中包含一个或多个 X 字符。这些 X 字符将在创建目录时被随机生成的字符序列替换。

  1. 返回值

如果 mkdtemp 函数成功创建了一个临时目录,则返回指向该目录的指针。
如果发生错误,则返回 NULL,并设置 errno 来指示错误原因。

3.mkdtemp函数用法实例

<1>.mkdtemp函数用法描述

DESCRIPTION
The mkdtemp() function generates a uniquely named temporary directory from template. The last six characters of template must be XXXXXX and these are replaced with a string that makes the directory name unique. The
directory is then created with permissions 0700. Since it will be modified, template must not be a string constant, but should be declared as a character array.

RETURN VALUE
The mkdtemp() function returns a pointer to the modified template string on success, and NULL on failure, in which case errno is set appropriately.

ERRORS
EINVAL The last six characters of template were not XXXXXX. Now template is unchanged.

翻译下:也就是说:要传入mkdtemp函数的字符串的最后必须是以"XXXXXX"结尾的,否则无法生成一个临时随机的目录。

<2>.mkdtemp函数实现

<1>.mkdtemp函数调用mktemp_internal函数

在这里插入图片描述

<2>.mktemp_internal函数实现

在这里插入图片描述
mktemp_internal函数中,可以看出通过MIN_X对’X’字符做判断,是否等于6个,第36行得知MIN_X等于6。

<3>.mkdtemp函数用法实例

v1.0
#include <iostream>
#include <stdlib.h>using namespace std;int main(){char input_path[128] = "Binder_XXX";char *output_path = nullptr;output_path = mkdtemp(input_path);printf("xxx---->output_path = %s\n",output_path);
}

打印:

xxx---->output_path = (null)

如果input_path字符串结尾不是"XXXXXX",则output_path为空。

v2.0
#include <iostream>
#include <stdlib.h>using namespace std;int main(){char input_path[128] = "Binder_XXXXXX";char *output_path = nullptr;output_path = mkdtemp(input_path);printf("xxx---->output_path = %s\n",output_path);
}

打印:

xxx---->output_path = Binder_ORp4fy

如果input_path字符串结尾是"XXXXXX",则 Binder_ORp4fy,并且是随机的,这个是我们想要的结果。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【力扣hot100】刷题笔记Day11

前言 科研不顺啊......又不想搞了&#xff0c;随便弄弄吧&#xff0c;多花点时间刷题&#xff0c;今天开启二叉树&#xff01; 94. 二叉树的中序遍历 - 力扣&#xff08;LeetCode&#xff09; 递归 # 最简单递归 class Solution:def inorderTraversal(self, root: TreeNode) …

基于ssm框架的高校班级管理系统设计与实现

为解决当前高校班级管理中管理方式落后、手段落后及效率低下等问题而以当前主流的互联网技术设计一款高校班级管理系统。该系统采用B/S模式的设计思路而将前端&#xff08;JSP技术&#xff09;和后端&#xff08;SSM框架MySQL数据库&#xff09;整合于一体并通过Java语言代码编…

华为OD机试真题-虚拟游戏理财-2023年OD统一考试(C卷)---Python3--开源

题目&#xff1a; 考察内容&#xff1a; for if max 代码&#xff1a; """ 题目分析&#xff1a;投资额*回报率投资回报 要在可接受范围内选择最优的投资方式获得最大回报最多投资2个理财产品输入&#xff1a; 产品数int; 总投资额int; 总风险int 产品投资…

Phind-70B-运行速度提高4倍的同时,缩小了与GPT-4 Turbo在代码质量上的差距

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

129 Linux 系统编程8 IO操作 系统函数 open

系统调用 什么是系统调用&#xff1a; 由操作系统实现并提供给外部应用程序的编程接口。(Application Programming Interface&#xff0c;API)。是应用程序同系统之间数据交互的桥梁。 C标准函数和系统函数调用关系。一个helloworld如何打印到屏幕。 回忆我们前面学过的C标准…

使用 yarn 的时候,遇到 Error [ERR_REQUIRE_ESM]: require() of ES Module 怎么解决?

晚上回到家&#xff0c;我打开自己的项目&#xff0c;执行&#xff1a; cd HexoPress git pull --rebase yarn install yarn dev拉取在公司 push 的代码&#xff0c;然后更新依赖&#xff0c;最后开始今晚的开发时候&#xff0c;意外发生了&#xff0c;竟然报错了&#xff0c;…

基于qt的图书管理系统----03核心界面设计

参考b站&#xff1a;视频连接 源码github&#xff1a;github 目录 1 添加软件图标2 打包程序3 三个管理界面设计4 代码编写4.1 加载界面4.2 点击按钮切换界面4.3 组团添加样式4.4 搭建表头4.5 表格相关操作 从别人那里下载的项目会有这个文件&#xff0c;里边是别人配置的路径…

基于Java SSM框架实现艺诚美业管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现艺诚美业管理系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&a…

制造执行系统(MOM):生产过程大屏联动、一目了然。

大家好&#xff0c;我是大美B端工场&#xff0c;本期继续分享常见的制作执行系统&#xff0c;欢迎大家关注&#xff0c;如有B端写系统界面的设计和前端需求&#xff0c;可以联络我们。 一、什么是MOM MOM系统是制造执行系统&#xff08;Manufacturing Operations Management S…

IDEA Debug框的 show execution point按钮没了

在这里右键&#xff1a; Add Action&#xff1a; 搜索添加&#xff1a; 本文由博客一文多发平台 OpenWrite 发布&#xff01;

go 1.18 不同目录package引用问题

go 1.18开始使用module了 不同的package在vs code中引用的话 需要先开启 是Go1.11版本之后 推出的版本管理工具 有点类似java的 maven工具 可以引入依赖使用 go env -w GO111MODULEon 先把这个打开 然后在创建的vs code工作目录下 执行 module gomdoule module 模块名 会生…

Linux——简单的Shell程序

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、Shell程序思路二、Shell代码展示 一、Shell程序思路 用下图的时间轴来表示事件的发生次序…