前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Linux系统下C++标准库函数

Linux系统下C++标准库函数

作者头像
用户7886150
修改2021-02-16 19:55:21
修改2021-02-16 19:55:21
1.9K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: C++ vfscanf()

1、字符串函数 

头文件: 

#include <ctype.h> 

函数名作用isalnum()测试字符是否为英文字母或数字isalpha()测试字符是否为英文字母isascii()测试字符是否为ASCII码字符isblank()测试字符是否为空白字符 包括空格 \r\n\t 符号iscntrl()测试字符是否为ASCII码的控制字符isdigit()测试是否为阿拉伯数字 16进制会出现错误isgraph()测试字符是否为可打印字符 打印到纸上islower()测试字符是否为小写英文字母isupper()测试字符是否为大写英文字母isprint()测试字符是否为可打印字符 打印到屏幕上isspace()测试字符是否为空格字符ispunct()测试字符是否为标点符号或特殊符号isxdigit()测试字符是否为16进制数字

2、数据转换函数 

头文件: 

#include <stdlib.h> 

包含 数据转换 随机数 字符集的转换 

1)字符串转换成对应的数 

函数名作用 atof()将字符串转换成浮点型数 atoi()将字符串转换成整型数 以前i=16位 l=32位 atol()将字符串转换成长整型数 现在i=32位 l=64位atoll()将字符串转换成长整型数 ll=64位 部分系统不支持使用strtol()将字符串转换成整数strtoul( )将字符串转换成无符号整数strtoll( )将字符串转换成长整数(C++11标准及以上)strtoull()将字符串转换成无符号长整数(C++11标准及以上)strtof()将字符串转换成浮点数(C++11标准及以上)strtod()将字符串转换成双精度数strtold()将字符串转换成长双精度数(C++11标准及以上)

2)对应的数转换成字符串 

整数同样可以应用与下列函数 

函数名作用ecvt(double value,int ndigit,int* decpt,int *sign)将浮点型数转换成字符串 ndgit指的是全部的有效位数 数量不足是在尾部补0fcvt(double value,int ndigit,int* decpt,int *sign)将浮点型数转换为字符串 ndigit 指的是小数点之后的有效位数 不足以0填满gcvt(double value,int ndigit,int *buffer)将浮点型数转换为字符串 ndigit 指的是最大有效位数 不做任何处理

3、格式化输出函数 

函数名作用printf()格式化输出数据 输出时需再参数之间加上分隔符 输出时还需再参数的结尾加上 ’ \n ’ 才能正常输出vprintf()格式化输出数据 可变参数函数实现时使用vsnprintf()格式化字符串复制 用法与snprintf()类似vsprintf()格式化字符串复制 用法与sprintf()类似sprintf()格式化字符串复制 多个变量拼接到一个字符串中snprintf()格式化字符串复制 多个变量拼接到一个字符串中 多了字符串大小参数fprintf()格式化输出数据至文件 用文件记录数据 可以不受缓冲区影响 数据量大时读取速度慢vfprintf()格式化输出数据至文件

4、格式化输入函数 

函数名作用scanf()格式化字符串输入 可用一个变量记录scanf()的返回值 1、空格是默认的分隔符 2、部分数据格式是可以自动正确分割的,但是整数和小数之间,需要手动分割(使用空格) 3、格式字符串中的空格可有可无,但是如果使用了其他分隔符,则在输入的时候,必须对应输入分割符 4、待输入变量,一定要取地址sscanf()格式化字符串输入vfscanf()格式化文件字符串输入fscanf()格式化文件字符输入 

格式参数作用%d整数输入输出参数%u无符号整数%l64位整数%lld64位整数%f对应 float类型 在printf()中以doublue类型处理 在scanf()中以float类型处理 已常规方式显示小数%lf对应 doublue类型%e指数形式表示小数%g指数形成更短以指数形式表示 小数更短以小数形式表示%s输出一个字符串%c输入输出一个字符

5、权限控制函数 

1)Linux权限说明 

Linux权限说明作用S 提权和降权设置用户权限s 修改我当前组设置组权限t仅所有者可删除权限r 4读取权限w 2写入权限x 1执行权限第一个字母表示d 表明是一个文件夹 l 表明是以一个连接 其他方式表明是一个普通文件第2-4个字母表示所有者的权限第5-7个字母表示所在组的权限第8-10个字母表示其他组的权限

对进程也是有效 

对内存也是有效 

Linux下 一切皆文件  

头文件: 

#include <unistd.h> 

#include <sys/types.h> 

2)取得用户识别码 

函数名作用geteuid()取得有效的用户识别码getuid()取得真实的用户识别码

真实的用户:当下程序所拥有的用户状态 

有效的用户:程序启动时所拥有的用户状态 

一般调用时调用真实用户 

程序在运行的时候,用户权限是可以发生改变的 

UID作用0 root最高权限1000~10000(不包含10000)system 数据库 服务 tty 保留的用户10000(包含10000)以上其他用户

Android 每个应用会分配一个用户(系统应用例外) 

3)取得用户组识别码 

函数名作用getegid()取得有效的组识别码getgid()取得真实的组识别码

真实的用户组:当下程序所拥有的用户状态 

有效的用户组:程序启动时所拥有的用户状态 

1、权限不足,无法产生效果 

2、提权需要该文件属于高级别的用户或者用户组,即有效用户有更高的权限或者,以更高权限的用户来执行 

真实用户权限有效用户权限是否能提权高权限高权限可以提权高权限低权限可以提权低权限高权限可以提权低权限低权限不可提权

4)设置用户识别码 

函数名作用setreuid()设置真实及有效的用户识别码seteuid()设置有效的用户识别码setuid()设置真实的用户识别码

5)设置用户组的识别码 

函数名作用setregid()设置真实及有效用的组识别码setegid()设置有效的组识别码setgid()设置真实的组识别码

6)守护进程的关键调用函数 

函数名作用setsid()创建会话ID

用户和组要有足够的权限 

如何获取权限: 

1、以高权限用户来启动 

2、有能力提权 

创建新会话 

当前进程只能是子进程才能调用成功

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档