口碑好的南京网站建设/个人如何做百度推广
文章目录
- 前言
- 字符串复制-strcpy
- 字符串复制(按照位数)-strncpy
- 字符串比较-strcmp
- 字符串比较(按照位数)-strncmp
- 不区分大小写的字符串比较-strcasecmp
- 不区分大小写的比较(前n位)-strncasecmp
- 字符串按照格式写入-sprintf
- 字符串按照格式和个数写入-snprintf
- 字符串拼接-strcat
- 字符串拼接(前n位)-strncat
- 字符串切割-strtok
- 字符串切割-strsep
- 查找字符串是否在另一个字符串中-strstr
- 查找字符串是否在另一个字符串中-不区分大小写-strcasestr
- 查找某个字符是否在字符串中-strchr
- 字符串转数字-atoi
- 在字符串提取前面的数字字符并转换成数字(根据参数选择转换后的数字类型)-strtoul
- 判断字符是否为空-isspace
- 检查字符是否是十进制数字字符-isdigit
前言
当前文档为C语言字符串的基本操作(用过的以及man时发现的),用于本人记录使用,会持续更新
字符串复制-strcpy
#include <string.h>
char *strcpy(char *dest, const char *src);// 将后面的变量赋值给前面
// 函数返回一个指向目标字符串dest的指针。
// 需要注意前面变量的长度,要大于等于 后面的长度,要不然编译报警告,还容易越界后报错
字符串复制(按照位数)-strncpy
#include <string.h>
char *strncpy(char *dest, const char *src, size_t n);// 将后面的字符串赋值给前面的字符串 复制 n 个
// 函数返回一个指向目标字符串dest的指针。
字符串比较-strcmp
#include <string.h>
int strcmp(const char *s1, const char *s2);// 字符串比较,完整比较
// 比较方式为 按照字符串每个字符的ASCII码按位比较,不相同时,前面的大 返回 大的数,后面的大,返回负的少的个数
字符串比较(按照位数)-strncmp
#include <string.h>
int strncmp(const char *s1, const char *s2, size_t n);// 前后字符串比较,比较前n位,比较方式同上
不区分大小写的字符串比较-strcasecmp
#include <strings.h>
int strcasecmp(const char *s1, const char *s2);// 不区分大小写的比较,比较方式同上
不区分大小写的比较(前n位)-strncasecmp
#include <strings.h>
int strncasecmp(const char *s1, const char *s2, size_t n);// 不区分大小写的比较,比较前n位,比较方式同上
字符串按照格式写入-sprintf
#include <stdio.h>
int sprintf(char *str, const char *format, ...);// 按照 中间的格式,将后面的变量 写入到 前面的字符串中
char buf[128] = {0};
if(sprintf(buf,"%s: %d\n","name",18) > 0){//成功 返回 写入的字符数
}else{//失败返回 负数
}
字符串按照格式和个数写入-snprintf
#include <stdio.h>
int snprintf(char *str, size_t size, const char *format, ...);// 按照中间格式,将后面的变量们,写入到第一个变量中,写入 size个
// 注意: size为最大限制个数,实际写入最大个数为 size - 1 个,最后一位会被 写入 '\0'
char buf[128] = {0};
if(snprintf(buf,32,"%s: %d\n","name",18) > 0){ //按照 %s: %d 格式将 name 跟 18 写入到 buf中,最多写入 32个//成功 返回 写入的字符数
}else{//失败返回 负数
}
字符串拼接-strcat
#include <string.h>
char *strcat(char *dest, const char *src);// 将src字符串 拼接到 dest 字符串中,替换dest的'\0'。需要注意dest字符串足够大。
字符串拼接(前n位)-strncat
#include <string.h>
char *strncat(char *dest, const char *src, size_t n);// 将src字符串中的前n位 拼接到 dest 字符串中,替换dest的'\0'。需要注意dest字符串足够大。
字符串切割-strtok
#include <string.h>
char *strtok(char *str, const char *delim);// 字符串切割,将str 按照 delim 样式切割。将切割完的字符串的指针返回
// 第二次切割时,str 写为 NULLint main(int argc, char const *argv[])
{char buf[128] = "this_is_test:name:qxy:age:200";char *temp = NULL;temp = strtok(buf,":");while(temp != NULL){printf("__<%s>\n",temp);temp = strtok(NULL,":");}return 0;
}
字符串切割-strsep
#include <string.h>
char *strsep(char **stringp, const char *delim);// 字符串切割:将stringp 字符串 按照 字符 delim 进行切割
// 切割完 前面的部分 通过返回值返回,剩余部分 保存在 stringp 字符串中int main()
{char query[] ="this_is_test:name:qxy:age:200";char *q, *temp_q;q = query;printf("old_str is <%s>\n",query);temp_q = strsep(&q,":"); printf("[temp_q ] :<%s>\n", temp_q); //但是printf("[q] :<%s>\n", q);temp_q = strsep(&q,":"); printf("[2temp_q ] :<%s>\n", temp_q);printf("[2q] :<%s>\n", q);temp_q = strsep(&q,":");printf("[3temp_q ] :<%s>\n", temp_q);printf("[3q] :<%s>\n", q);return 0;
}
查找字符串是否在另一个字符串中-strstr
#include <string.h>
char *strstr(const char *haystack, const char *needle);// 字符串查找,查找后面的字符串 是否在 前面的字符串中
// 没找到返回 NULL
// 找到,返回查找字符串的在haystack字符串的第一位指针
查找字符串是否在另一个字符串中-不区分大小写-strcasestr
#include <string.h>
char *strcasestr(const char *haystack, const char *needle);// 查找后面字符串 是否在 前面字符串中,不区分大小的的查找
// 没找到返回 NULL
// 找到,返回查找字符串的在haystack字符串的第一位指针
查找某个字符是否在字符串中-strchr
#include <string.h>
char *strchr(const char *s, int c);// 函数返回一个指针,指向前面字符串中 最后一次出现的字符c 的位置
// 没找到返回 NULL
字符串转数字-atoi
#include <stdlib.h>
int ret = atoi(const char* buf);// 出错返回 0
在字符串提取前面的数字字符并转换成数字(根据参数选择转换后的数字类型)-strtoul
#include <stdlib.h>
int main(int argc, char const *argv[])
{char buf[128] = " 25036 HELLO_WORLD QXY";//char buf[128] = " HELLO_WORLD QXY 2525252"; //这个不行.....printf("buf is <%s>\n",buf);char *temp = NULL;unsigned long int x = strtoul(buf,&temp,10);printf("x = <%lu>\n",x);printf("temp = <%s>\n",temp);printf("buf = <%s>\n",buf);return 0;
}
unsigned long strtoul(const char nptr, char **endptr, int base);
strtoul()函数根据给定的基数将nptr中字符串的初始部分转换为无符号长值,该值必须为介于2和36之间(包括2和36)或者是特殊值0。
基本上就是 0 2 8 10 16 (如果是 0 字符串以0x开头就是16进制读取,以0开头 就是8进制,否则一律按十进制处理)
给定基数中的数字。(在10以上的base中,大写或小写字母“A”表示10,“B”表示11,依此类推 “Z”表示35。)
字符串可以以任意数量的空格 tab 开头,后跟一个可选的“+”或“-”号。
字符串的剩余部分以显而易见的方式转换为无符号长值,在第一个无效字符处停止
如果endptr不为NULL,strtoul()将第一个无效字符的地址存储在endptr中。如果根本没有数字,strtoul()将存储endptr中nptr的原始值(并返回0)。特别是,如果返回时nptr不是“\0”,但**endptr是“\0”时,则整个字符串为有效的
strtoull()函数的工作原理与strtoul()函数类似,但返回一个无符号长-长值。
判断字符是否为空-isspace
’ ’ (0x20) space (SPC) 空格符
‘\t’ (0x09) horizontal tab (TAB) 水平制表符
‘\n’ (0x0a) newline (LF) 换行符
‘\v’ (0x0b) vertical tab (VT) 垂直制表符
‘\f’ (0x0c) feed (FF) 换页符
‘\r’ (0x0d) carriage return (CR) 回车符
#inlcude <ctype.h>
int ret = isspace(char c);//为空返回非0,不为空返回 0
检查字符是否是十进制数字字符-isdigit
#inlcude <ctype.h>
int ret = isdigit(char c);//是一个数字,则该函数返回非零值,否则返回 0。
相关文章:

C语言-字符串操作函数-附加使用方式
文章目录 前言字符串复制-strcpy字符串复制(按照位数)-strncpy字符串比较-strcmp字符串比较(按照位数)-strncmp不区分大小写的字符串比较-strcasecmp不区分大小写的比较(前n位)-strncasecmp字符串按照格式写入-sprintf字符串按照格式和个数写入-snprintf…...

06-React组件 Redux React-Redux
React组件化(以Ant-Design为例) 组件化编程,只需要去安装好对应的组件,然后通过各式各样的组件引入,实现快速开发 我们这里学习的是 Ant-design (应该是这样),它有很多的组件供我们…...

Windows安装卸载MySQL
【官方】MySQL参考手册:介绍MySQL Server、SQL、InnoDB存储引擎、复制等。 Windows 卸载 MySQL 删除程序 【win x】 > p ,在安装的程序中卸载MySQL相关删除安装目录和数据文件夹 D:\ProgramFiles\MySQL C:\ProgramData\MySQL删除服务 【win r】 &…...

element-ui 重置resetFields()不生效
element-ui 重置resetFields()不生效 初始化数据 data() {return {dialogVisible: false,form: {name: ,age: ,sex: ,birth: ,addr: }}}弹窗关闭重置数据 handleClose() {// 弹窗关闭的时候清除数据this.$refs.form.resetFields()this.dialogVisible false }以上操作this.$…...

JVM学习笔记-如何在IDEA打印JVM的GC日志信息
若要在Idea上打印JVM相应GC日志,其实只需在Run/Debug Configurations上进行设置即可。 拿《深入Java虚拟机》书中的3-7代码例子来演示,如 1 public class JvmTest {2 private static final int _1MB1024*1024;3 public static void main(String…...

16ASM 汇编基础与Debug使用
目录 硬件运行机制 微机系统硬件组成 计算机系统组成 8086CPU组织结构 DoxBox安装 Debug使用 R命令 D命令 E命令 U命令 T命令 A命令 标志寄存器 常用机器指令 硬件运行机制 下面是一个电子器件二极管,正向加电则通,反向加电则不通 利用二…...

基于Java车辆管理系统(如高校、办公园区)
基于Java车辆管理系统(如高校、办公园区) 功能需求 1、车辆进出管理:对进出校园和园区的车辆进行登记、授权和监管,确保车辆进出安全,特别是对于贵重车辆或特殊车辆,可以进行特别监控。 2、停车管理&…...

Dubbo v Spring Cloud:两大技术栈如何选型?
提到微服务开源框架,不可不说的是 Dubbo 和 Spring Cloud,这两大框架应该是大家最熟悉的微服务解决方案,也是面试中的热点。本文就梳理下 Dubbo 和 Spring Cloud 的应用特性,以及两个组件的功能对比。 Dubbo 应用 Dubbo 是阿里开…...

ubuntu上搭建bazel编译环境,构建Android APP
背景是github上下载的工程,说明仅支持bazel编译,折腾了一天Android studio,失败。 不得不尝试单价bazel编译环境,并不复杂,过程记录如下 说明:ubuntu环境是20.04,pve虚拟机安装 1.安装jdk sudo…...

(第38天)RAC 修改 IP 信息
介绍 在生产中有时候会遇到机房搬迁网络变更、系统上线由测试环境切换为生产环境、系统层面双网卡绑定或者解绑等情况。Oracle RAC 环境下应该如何操作?首先,我们都知道 Oracle RAC 中的 IP 主要有:Public IP、Virtual IP、SCAN IP、Private IP 这几种,接下来分别讲解这几…...

利用法线贴图渲染逼真的3D老虎模型
在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格…...

『 MySQL数据库 』聚合统计
文章目录 前言 🥑🥝 聚合函数🍓 COUNT( ) 查询数据数量🍓 SUM( ) 查询数据总和🍓 AVG( ) 查询数据平均值🍓 MAX( ) 查询数据最大值🍓 MIN( ) 查询数据最小值 🥝 数据分组GROUP BY子句…...

Redis - 事务隔离机制
Redis 的事务的本质是 一组命令的批处理 。这组命令在执行过程中会被顺序地、一次性 全部执行完毕,只要没有出现语法错误,这组命令在执行期间是不会被中断。 当事务中的命令出现语法错误时,整个事务在 exec 执行时会被取消。 如果事务中的…...

android项目实战之编辑器图片上传预览
现状分析 项目的需求用到编辑器,编辑器中又可能用到图片上传功能。 实现方案 1. 增加依赖库,可以参考前面的几篇文章,都有描述。 2. 核心代码实现 PictureSelector.create(GoodItemContentFragment.this) .openGallery(SelectMimeType.…...

微信小程序:上传图片到别的域名文件下
效果 wxml <!-- 上传照片 --> <view class"addbtn"><view classpic name"fault_photo" wx:for"{{imgs}}" wx:for-item"item" wx:key"*this"><image classweui-uploader_img src"{{item}}"…...

Linux----内核及发行版
1. Linux内核 Linux内核是操作系统内部操作和控制硬件设备的核心程序,它是由芬兰人林纳斯开发的。 内核效果图: 说明: 真正操作和控制硬件是由内核来完成的,操作系统是基于内核开发出来的。 2. Linux发行版 是Linux内核与各种常用软件的组合产品&am…...

设备制造行业CRM:提升客户满意度,驱动业务增长
设备制造行业客户需求多样化、服务链路长,企业在关注APS、EMS等工业软件之余还要以客户为中心,做好客户服务。设备制造行业CRM管理系统是企业管理客户关系的利器,设备制造行业CRM的作用有哪些?一文带您看懂。 设备制造行业需要解…...

JavaScript实现复制功能函数
function copyUrl() {var copyText document.getElementById("url");copyText.select();document.execCommand("copy"); }其中,copyUrl()函数用于复制,document.getElementById(“url”)用于获取链接的DOM元素,select()…...

JVM垃圾收集器
主要垃圾收集器如下,图中标出了它们的工作区域、垃圾收集算法,以及配合关系。 HotSpot虚拟机垃圾收集器 这些收集器里,面试的重点是两个——CMS和G1。 Serial 收集器 Serial(串行)收集器是最基本、历史最悠久的垃圾…...

LeetCode(58)随机链表的复制【链表】【中等】
目录 1.题目2.答案3.提交结果截图 链接: 随机链表的复制 1.题目 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节…...

JVM源码剖析之registerNatives方法
目录 版本信息: 写在前面: 源码论证: 总结: 版本信息: jdk版本:jdk8u40 写在前面: 在Java类库中很多类都有一个registerNatives的native方法,并且写在static静态代码块中进行初…...

HarmonyOS鸿蒙应用开发——数据持久化Preferences
文章目录 数据持久化简述基本使用与封装测试用例参考 数据持久化简述 数据持久化就是将内存数据通过文件或者数据库的方式保存到设备中。HarmonyOS提供两两种持久化方案: Preferences:主要用于保存一些配置信息,是通过文本的形式存储的&…...

C++STL库的 deque、stack、queue、list、set/multiset、map/multimap
deque 容器 Vector 容器是单向开口的连续内存空间, deque 则是一种双向开口的连续线性空 间。所谓的双向开口,意思是可以在头尾两端分别做元素的插入和删除操作,当然, vector 容器也可以在头尾两端插入元素,但是在其…...

Vuex快速上手
一、Vuex 概述 目标:明确Vuex是什么,应用场景以及优势 1.是什么 Vuex 是一个 Vue 的 状态管理工具,状态就是数据。 大白话:Vuex 是一个插件,可以帮我们管理 Vue 通用的数据 (多组件共享的数据)。例如:购…...

计网 - LVS 是如何直接基于 IP 层进行负载平衡调度
文章目录 模型LVS的工作机制初探LVS的负载均衡机制初探 模型 大致来说,可以这么理解(只是帮助我们理解,实际上肯定会有点出入),对于我们的 PC 机来说,物理层可以看成网卡,数据链路层可以看成网卡…...

GEE机器学习——利用支持向量机SVM进行土地分类和精度评定
支持向量机方法 支持向量机(Support Vector Machine,SVM)是一种常用的机器学习算法,主要用于分类和回归问题。SVM的目标是找到一个最优的超平面,将不同类别的样本点分隔开来,使得两个类别的间隔最大化。具体来说,SVM通过寻找支持向量(即距离超平面最近的样本点),确定…...

【ARM Trace32(劳特巴赫) 使用介绍 13 -- Trace32 断点 Break 命令篇】
文章目录 1. Break.Set1.1 TRACE32 Break1.1.1 Break命令控制CPU的暂停1.2 Break.Set 设置断点1.2.1 Trace32 程序断点1.2.2 读写断点1.2.2.1 变量被改写为特定值触发halt1.2.2.2 设定非值触发halt1.2.2.4 变量被特定函数改写触发halt1.2.3 使用C/C++语法设置断点条件1.2.4 使用…...

【JVM入门到实战】(三) 查看字节码文件的工具
一、 javap -v命令 javap是JDK自带的反编译工具,可以通过控制台查看字节码文件的内容。适合在服务器上查看字节码文件内容。直接输入javap查看所有参数。输入javap -v 字节码文件名称 查看具体的字节码信息。(如果jar包需要先使用 jar –xvf 命令解压&a…...

9:00面试,9:05就出来了,问的问题有点变态。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到12月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40…...

无需重启,修改Linux服务器时区
Linux修改服务器时区(无需重启) 1、复制命令:2、使用tzselect命令:3、使用date查看是否修改正确 1、复制命令: cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime2、使用tzselect命令: tzselect按照要…...