C语言中不常用到的一些函数

basename

功能:
basename() 函数用于获取路径中的文件名部分,即去除路径中的目录部分。

函数原型:

char *basename(char *path);

参数说明:

  • path: 指向以null结尾的字符串,表示文件路径。

用法示例:

#include <stdio.h>
#include <libgen.h>int main() {char path[] = "/home/user/example.txt";char *base = basename(path);printf("Base name: %s\n", base);return 0;
}

strrchr

功能:
strrchr() 函数在给定字符串中从后向前查找指定字符,并返回最后一个匹配的字符的指针。

函数原型:

char *strrchr(const char *str, int character);

参数说明:

  • str: 指向以null结尾的字符串。
  • character: 要查找的字符。

用法示例:

#include <stdio.h>
#include <string.h>int main() {char str[] = "hello world";char *ptr = strrchr(str, 'l');if (ptr != NULL)printf("Last occurrence of 'l' at position: %ld\n", ptr - str);elseprintf("Character not found\n");return 0;
}

asprintf

功能:
asprintf() 函数用于根据格式化字符串创建动态分配的字符串,并将结果存储在提供的指针中。

函数原型:

int asprintf(char **strp, const char *format, ...);

参数说明:

  • strp: 用于存储格式化字符串的指针的地址。
  • format: 格式化字符串。
  • ...: 可变数量的参数,用于填充格式化字符串中的占位符。

用法示例:

#include <stdio.h>
#include <stdlib.h>int main() {char *str;int len = asprintf(&str, "Value of pi: %.2f", 3.14159);printf("Formatted string: %s\n", str);printf("Length of formatted string: %d\n", len);free(str);return 0;
}

glob

功能:
glob() 函数用于根据提供的匹配模式搜索文件系统中的文件。匹配结果存储在提供的 glob_t 结构中。

函数原型:

int glob(const char *pattern, int flags, int (*errfunc) (const char *epath, int eerrno), glob_t *pglob);

参数说明:

  • pattern: 匹配模式字符串。
  • flags: 匹配选项标志。
  • errfunc: 错误处理函数。
  • pglob: 指向 glob_t 结构的指针,用于存储匹配结果。

用法示例:

#include <stdio.h>
#include <glob.h>int main() {glob_t results;int status = glob("/usr/bin/*", 0, NULL, &results);if (status == 0) {printf("Matched files:\n");for (int i = 0; i < results.gl_pathc; ++i) {printf("%s\n", results.gl_pathv[i]);}globfree(&results);} else {printf("Error occurred\n");}return 0;
}

scandir

功能:
scandir() 函数用于扫描指定目录中的文件,并将结果存储在提供的指针数组中。它还可以通过可选的过滤器和比较器来筛选和排序结果。

函数原型:

int scandir(const char *dir, struct dirent ***namelist, int (*filter)(const struct dirent *), int (*compar)(const struct dirent **, const struct dirent **));

参数说明:

  • dir: 指定要搜索的目录路径。
  • namelist: 存储结果的指针数组。
  • filter: 可选的过滤函数,用于筛选结果。
  • compar: 可选的比较函数,用于对结果进行排序。

用法示例:

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>int main() {struct dirent **namelist;int n = scandir(".", &namelist, NULL, alphasort);if (n >= 0) {printf("Files in current directory:\n");for (int i = 0; i < n; ++i) {printf("%s\n", namelist[i]->d_name);free(namelist[i]);}free(namelist);} else {printf("Error occurred\n");}return 0;
}

strtoul

功能:
strtoul() 函数将字符串表示的数字转换为无符号长整型数。它可以指定转换的基数(如十进制、十六进制等),并且可以检测并返回转换结束的位置。

函数原型:

unsigned long int strtoul(const char *nptr, char **endptr, int base);

参数说明:

  • nptr: 指向要转换的字符串。
  • endptr: 用于存储转换结束位置的指针。
  • base: 进制基数。

用法示例:

#include <stdio.h>
#include <stdlib.h>int main() {char str[] = "42";char *end;unsigned long value = strtoul(str, &end, 10);printf("Parsed value: %lu\n", value);printf("End pointer: %s\n", end);return 0;
}

strdup

功能:
strdup() 函数用于复制给定的字符串,并返回一个新的动态分配的字符串副本。

函数原型:

char *strdup(const char *str);

参数说明:

  • str: 要复制的字符串。

用法示例:

#include <stdio.h>
#include <string.h>int main() {const char *source ="Hello, world!";char *copy = strdup(source);printf("Copied string: %s\n", copy);free(copy);return 0;
}

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

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

相关文章

LNMP环境:揭秘负载均衡与高可用性设计

lb1: 192.168.8.5 lb2: 192.168.8.6 web1:192.168.8.7 web2:192.168.8.8 php-fpm: 192.168.8.9 mysql: 192.168.8.10 nfs:192.168.8.11 分别插入镜像 8.5-8.8 分别安装nginx,并设置启动 8.9 安装php 8.10 安装mysql 先配置一台web服务器然后同步 设置网站根目录 cp -…

蛮力算法与凸包蛮力算法的深入探究

一、引言 在计算机科学中&#xff0c;算法是解决问题的核心。蛮力算法&#xff08;Brute Force Algorithm&#xff09;是众多算法中的一种&#xff0c;它采取最直接的方式来解决问题&#xff0c;不进行任何优化。尽管这种方法的效率可能不高&#xff0c;但在某些情况下&#x…

静态路由协议

路由器工作原理 当数据包进入路由器后&#xff0c;路由器基于数据包中的目标IP地址&#xff0c;查询本地的路由表&#xff1b;若表中存在记录则无条件按照记录转发&#xff0c;若没有记录将丢弃。 默认路由器仅存在直连网段路由&#xff0c;非直连网段被称为未知网段。 路由器…

深入解析二叉树:理论与实践的完美结合

二叉树作为数据结构的核心,不仅在算法设计中占有重要位置,而且在互联网公司的面试中频繁出现。通过本文的学习,你将能够深入理解二叉树的概念、掌握其实现方式,并能应用于实际问题解决。 深入解析二叉树:理论与实践的完美结合 1. 二叉树的基础知识定义二叉树节点2. 二叉树…

【00】【solidity最新教程】-简介

Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C&#xff0c;Python 和 Javascript 语言的影响&#xff0c;设计的目的是能在以太坊虚拟机&#xff08;EVM&#xff09;上运行。 Solidity 是静态类型语言&#xff0c;支持继承、库和复杂的用…

安卓手机APP开发的安卓工作台的简介

安卓手机APP开发的安卓工作台的简介 目录 概述 项目结构 Gradle的构建系统 构建变体 多APK支持 资源的废弃回收 管理依赖 调试与性能分析工具 内联调试 性能分析工具 堆转存

java -网络编程socket-聊天室-02

完整版代码 java -聊天室的代码: 用于存放聊天室的项目的代码和思路导图https://gitee.com/to-uphold-justice-for-others/java---code-for-chat-rooms.git 先引入线程的正统解释 线程&#xff08;Thread&#xff09;是程序执行流的最小单元。线程是操作系统分配CPU时间片的基…

【数据分析面试】10. 计算平均通勤时间(SQL:timestampdiff() 和datediff()区别)

题目 假设你在Uber工作。rides表包含了关于Uber用户在美国各地的行程信息。 编写一个查询&#xff0c;以获取纽约&#xff08;NY&#xff09;每位通勤者的平均通勤时间&#xff08;以分钟为单位&#xff09;&#xff0c;以及纽约所有通勤者的平均通勤时间&#xff08;以分钟为…

vue广告悬浮框,页面来回移动,鼠标放上停止,离开移动

1.dom <div class"popup-dialog" id"popupDialog" mouseover"onMmouseover" mouseout"onMouseout"><p>vue广告悬浮</p></div>2.js mounted() {this.initPopup();},beforeDestory() {if (this.times) {clearIn…

基于JAX的二阶优化方法的实践

使用协作分支上的算法 git clone https://github.com/linjing-lab/jax.git cd jax git checkout linjing-lab cd examples在命令行预览方法 牛顿方法&#xff1a; cat newton_method.py拟牛顿法&#xff1a; cat bfgs_method.py在命令行运行程序 python newton_method.pyp…

鸡尾酒排序解读

在数据处理的海洋中&#xff0c;排序算法无疑是引领我们探索数据规律的灯塔。今天&#xff0c;我们要探讨的是一种有趣且独特的排序算法——鸡尾酒排序。鸡尾酒排序&#xff0c;也被称为定向冒泡排序、双冒泡排序或搅拌排序&#xff0c;是冒泡排序的一种变体&#xff0c;它通过…

了解强化学习算法 PPO

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 介绍&#xff1a; PPO 算法&#xff0c;即 Proximal Policy Optimization&#xff08;近端策略优化&#xff09;&#xff0c;是一种强化学习算法。它的主要目的是改进策略梯度方法&#xff0c;使得训练…

【RV1126】Ubuntu22.04下sdk编译问题汇集

对于新版本Ubuntu系统来编译SDK&#xff0c;尤其是buildroot ,是一个巨大考验&#xff0c;发现问题如下&#xff1a; 1. c-stack.c的SIGSTKSZ错误 buildroot 报错&#xff1a;c-stack.c:55:26:error:missing binary operator before token “(“55 在buildroot目录中找到c-s…

flink on yarn

前言 Apache Flink&#xff0c;作为大数据处理领域的璀璨明星&#xff0c;以其独特的流处理和批处理一体化模型&#xff0c;成为众多企业和开发者的首选。它不仅能够在处理无界数据流时展现出卓越的实时性能&#xff0c;还能在有界数据批处理上达到高效稳定的效果。本文将简要…

高校心理咨询预约系统的设计与实现(论文+源码)_kaic

摘 要 随着社会的发展&#xff0c;计算机的优势和普及使得高校心理咨询预约系统的开发成为必需。高校心理咨询预约系统主要是借助计算机&#xff0c;通过对信息进行管理。减少管理员的工作&#xff0c;同时也方便广大用户对个人所需信息的及时查询以及管理&#xff0c;其次是大…

苍穹外卖——项目搭建

一、项目介绍以及环境搭建 1.苍穹外卖项目介绍 1.1项目介绍 本项目&#xff08;苍穹外卖&#xff09;是专门为餐饮企业&#xff08;餐厅、饭店&#xff09;定制的一款软件产品&#xff0c;包括 系统管理后台 和 小程序端应用 两部分。其中系统管理后台主要提供给餐饮企业内部员…

【洛谷 P8655】[蓝桥杯 2017 国 B] 发现环 题解(邻接表+并查集+路径压缩)

[蓝桥杯 2017 国 B] 发现环 题目描述 小明的实验室有 N N N 台电脑&#xff0c;编号 1 ∼ N 1 \sim N 1∼N。原本这 N N N 台电脑之间有 N − 1 N-1 N−1 条数据链接相连&#xff0c;恰好构成一个树形网络。在树形网络上&#xff0c;任意两台电脑之间有唯一的路径相连。 …

ARM架构学习笔记2-汇编

RISC是精简指令集计算机&#xff08;RISC:Reduced Instruction Set Computing&#xff09; ARM汇编概述 一开始&#xff0c;ARM公司发布两类指令集&#xff1a; ① ARM指令集&#xff0c;这是32位的&#xff0c;每条指令占据32位&#xff0c;高效&#xff0c;但是太占空间 2…

斐波那契数列模型

1、第N个泰波那契数 1137. 第 N 个泰波那契数 - 力扣(LeetCode) 动态规划五个关键点: 1、状态表示:可以理解为dp数组中每一个数dp[i]的含义。怎么得来?(1、题目要求。2、经验+题目要求。3、分析问题的过程中,发现重复子问题。) 2、状态转移方程:即可以认为dp[i] = ?…

怎么让html打开网页自动跳转(多个链接)?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…