linux-字符串函数使用
linux-字符串函数使用
- 输入
- 输出
- 长度
- 大小
- 拼接
- 拷贝
- 填充
- 查找
- 比较
字符串的输入,输出,长度,大小,拼接,拷贝,填充,查找,比较
输入
相关的函数有: gets()、getchar()、fgetc()、fgets() 、scanf()。
s输入字符串, char/c输入字符, f可以是标准输入也可以是文件中获取
//gets 获取字符串给str 标准输入gets(str);puts(str); //将str输出出来
//fgets 获取输入的字符串 标准输入 和 文件输入fp = fopen("./test1.txt","a+"); //打开或创建test.txt文件,在末尾进行写入fgets(str2,8,fp); //sizeof(str2) 个数printf("%s\n",str2);fclose(fp);
//fgetc 获取输入的字符 标准输入 和 文件输入fp = fopen("./test1.txt","a+");ch = fgetc(fp); //sizeof(str2) 个数printf("%c\n",ch);fclose(fp);
//fseek() 移动光标fp = fopen("./test1.txt","a+");fseek(fp,3,SEEK_SET);ch=fgetc(fp);printf("%c\n",ch);fclose(fp);
输出
相关的函数有:putchar(),puts(),fputc(),fputs(),printf();
putchar('a'); //输出单个字符 到标准输出设备
puts("hello world!"); //输出字符串 到标准输出设备 自动换行
//与putchar类似,输出单个字符,到标准输出设备//不同的是还可以输出到指定文件fputc('a',fp); //指定文件fputc('a',stdout);//到终端 标准输出设备例子FILE *fp = NULL;if((fp = fopen("./test1.txt","w")) == NULL )
{perror("fopen err");exit(-1);
}fputc('a',fp); //向文件输出puts("fputc写入成功");fputc('a',stdout); //向终端输出fputc('\n',stdout);fclose(fp);
//与puts()类似,输出字符串,到标准输出设备
//不同的是还可以输出到指定文件
fputs("bcdefj",fp); //向文件输出
fputs('bcdefj',stdout); //到终端 标准输出设备
例子
FILE *fp = NULL;
if((fp = fopen("./test1.txt","a+")) == NULL )
{perror("fopen err");exit(-1);
}fputs("bcdefjhigklmn",fp); //向文件输出puts("fputs写入成功");fputs("bcd",stdout);fclose(fp);
长度
求字符串长度–strlen() 库函数 长度
char str[]="zxcvbnmasdfghjklqwertyuiop";printf("string:\"%s\"\n",str);printf("Length:\" %ld\"\n",strlen(str));puts("----------");/* 输出string:"zxcvbnmasdfghjklqwertyuiop"Length:" 26"----------*/
大小
求数据类型或变量占用内存的大小–sizeof() c语音中的关键字 内存
char str2[50]="hellow";char *ptr = str2;printf("sizeof: %ld\n", sizeof(str2));printf("strlen: %ld\n", strlen(str2));puts("~~~~~");printf("sizeof: %ld\n", sizeof(ptr));printf("strlen: %ld\n", strlen(ptr));printf("int-sizeof: %ld\n", sizeof(int)); //4printf("char-sizeof: %ld\n", sizeof(char)); //1puts("----------");/* 输出sizeof: 50strlen: 6~~~~~sizeof: 8strlen: 6int-sizeof: 4char-sizeof: 1----------
*/
拼接
字符串拼接–strcat() strncat()
strcat(str1,str2)—将str2全部放到str1后面。
strncat(str1,str2,num)—将str2前num个放到str1后面。
char str3[50]="hellow ";char str3_1[]="world !";puts("strcat函数:全部追加");strcat(str3,str3_1); //在最后进行添加printf("拼接后字符串为:\"%s\"\n",str3);puts("~~~~~");memset(str3,0x0,7); //str3字符串清零puts("strncat函数:追加的数量");strncat(str3,str3_1,5); //指定添加的个数printf("拼接后字符串为:\"%s\"\n",str3);puts("----------");
/* 输出strcat函数:全部追加拼接后字符串为:"hellow world !"~~~~~strncat函数:追加的数量拼接后字符串为:"world"
*/
拷贝
字符串拷贝 strcpy() strncpy()
strcpy(str1,str2)—将字符串str2全部拷贝到str1。
strncpy(str1,str2,num)—将字符串str2前num个数据拷贝到str1。
都是从头开始拷贝的,没涉及到的位置保持不变。
char str4[50];char str4_1[]="hellow world";puts("strcpy函数 全部复制");strcpy(str4,str4_1);printf("复制后str4: \"%s\"\n",str4);puts("~~~~~");memset(str4,'g',20); //将str4字符串前20位置为'g';puts("strcpy函数 复制的数量");strncpy(str4,str4_1,6);printf("复制后str4: \"%s\"\n",str4);puts("----------");
/* 输出strcpy函数 全部复制复制后str4: "hellow world"~~~~~strcpy函数 复制的数量复制后str4: "hellowgggggggggggggggg"----------
*/
填充
字符串填充 memset() bzero()
memset(str,dat,len)—把str里的数据从头开始填充数据dat(dat会被转换为 unsigned char 类型),共填充len个字节。
bzero(str,len)—将str字符串前len个字节给清零。
char str5[50]="22222222222";printf("str5: %s\n", str5);memset(str5,'3',strlen(str5));printf("memset: %s\n", str5);bzero(str5,strlen(str5));printf("bzero: %s\n",str5);puts("----------");
/* 输出str5: 22222222222memset: 33333333333bzero: ----------
*/
查找
字符串查找 strstr() strchr() strrchr()
char *strstr(const char *str1, const char *str2)—在字符串str1中查找第一次出现字符串str2的位置,并返回指向该位置的指针。如果没有找到,则返回NULL。
char *strchr(const char *s, int c) —在字符串s中查找第一次出现字符c的位置,并返回指向该位置的指针。
char *strrchr(const char *s, int c)-—在字符串s中查找最后一次出现字符c的位置,并返回指向该位置的指针
char str6[]="hello world";char *p = strstr(str6,"world");if(p!= NULL)printf("strstr函数: %s\n",p);elseprintf("strstr函数: 没有找到\n");puts("----------");
/* 输出strstr函数: world
*/
比较
字符串比较 strcmp() strncmp() memcmp()
int strcmp(const char *s1, const char *s2)—比较s1和s2的大小,按照对应想ASCII值来,直到找到不同的字符串或其中一个字符串结束。s1小于s2,返回一个负值。大于时返回一个正值。等于返回0。
int strncmp(const char *s1, const char *s2, size_t n)—比较字符串s1和s2的前n个字符的大小。比较方式与strcmp相同。
int memcmp(const void *s1, const void *s2, size_t n)—比较从s1和s2开始的n个字节的内存区域。比较是按照字节进行的,返回值与strcmp类似。
char str7[]="hello";char str7_1[]="world";printf("strcmp函数: %d\n",strcmp(str7,str7_1));printf("strncmp函数: %d\n",strncmp(str7,str7_1,5));printf("memcmp函数: %d\n",memcmp(str7,str7_1,5));puts("----------");
/* 输出strcmp函数: -120strncmp函数: -120memcmp函数: -1----------
*/
相关文章:
linux-字符串函数使用
linux-字符串函数使用 输入输出长度大小拼接拷贝填充查找比较 字符串的输入,输出,长度,大小,拼接,拷贝,填充,查找,比较 输入 相关的函数有: gets()、getchar()、fgetc(…...
Python 06 Set
Python 实例教程 Python 实例教学_ 06_集合第二十八课[2351. 第一个出现两次的字母](https://leetcode.cn/problems/first-letter-to-appear-twice/)[217. 存在重复元素](https://leetcode.cn/problems/contains-duplicate/)[219. 存在重复元素 II](https://leetcode-cn.com/pr…...
ControllerAdvice定义统一异常处理
springboot版本:2.6.13<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>在实体上添加校验注解,例如: NotBlankNotEmpty…...
Leetcode 162.寻找峰值
峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] nums[n] -∞ 。 你必须实现时间复杂度为 O(…...

c语言:知识补充
c语言中编译开始会对#define,#include等内容做预处理,可以用#define写一些简单函数,方便使用 #include <stdio.h> #include <stdlib.h>#define MAX(A, B) ((A) > (B) ? (A) : (B))int main(){printf("%d\n", MAX(…...

Dapper介绍及特性
一、Dapper介绍及特性 Dapper是一个.NET平台上的轻量级对象关系映射(ORM)工具,它通过扩展IDbConnection接口,提供了一系列的扩展方法来执行SQL查询并将结果映射到.NET对象中。Dapper以其高性能和简单易用著称,特别适合…...

LeetCode 149. 直线上最多的点数
LeetCode 149. 直线上最多的点数 给你一个数组 points ,其中 points[i] [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 示例 1: 输入:points [[1,1],[2,2],[3,3]] 输出:3 示例 2: 输入&…...

案例研究丨国控星鲨利用DataEase释放数据潜能,重塑业务视野
国药控股星鲨制药(厦门)有限公司(以下简称为国控星鲨)始创于1952年,前身为厦门鱼肝油厂,距今已经有70余年历史,是国家商务部认定的“中华老字号”企业。2011年,国药控股与厦门轻工集…...

网络基础概念和 socket 编程
网络基础概念和 socket 编程 学习目标: 了解 OSI 七层模型、TCP/IP 四层模型结构了解常见的网络协议格式掌握网络字节序和主机字节序之间的转换理解 TCP 服务器端通信流程理解 TCP 客户端通信流程实现 TCP 服务器端和客户端的代码 推荐一个非常好的学习资料仓库 协…...
TypeScript 中的接口、泛型与自定义类型
TypeScript 是一种超集语言,它为 JavaScript 添加了静态类型检查。通过 TypeScript,开发者可以获得更好的工具支持,并且能够编写出更加健壮的代码。本文将探讨 TypeScript 中的几个关键特性:接口、泛型以及如何创建自定义类型。 …...

常州威雅学校:跟随这场音乐盛宴,溯回她的音乐之路
时同学 常州威雅2021届毕业生 英国皇家北方音乐学院 钢琴系 西太湖畔清凉的晚风送来阵阵悦耳的钢琴声,时同学在母校的个人钢琴独奏悄然拉开序幕。这是她自毕业三年后,在常州威雅的首场钢琴独奏会。 随着第一个音符落下,她用手指在黑白键盘…...

【YashanDB知识库】由于hist_head$中analyze time小于tab$中analyze time导致的sql语句执行慢
本文内容来自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7459465.html?templateId1718516 问题现象 某局点yashandb cpu使用率100%,经线上分析是由于几个sql执行慢,其中一个sql为简单的单行等值绑定变量过滤排序。 经分…...

【有啥问啥】深度理解主动学习:机器学习的高效策略
深度理解主动学习:机器学习的高效策略 在大数据时代,数据量的爆炸性增长与有限的标注资源之间的矛盾日益凸显。如何高效地利用标注资源来训练高质量的模型,成为了机器学习领域亟待解决的问题。主动学习(Active Learning, AL&…...
智能守护者X100 - 自动化生产线智能机器人安全监控管理系统
1.产品介绍 产品名称: 智能守护者X100 - 自动化生产线智能机器人安全监控管理系统 主要功能: 全方位实时监控:智能守护者X100采用高清摄像头与红外夜视技术,实现对自动化生产线及智能机器人的360无死角监控。系统能自动识别并追踪生产线上的机器人活动轨迹,确保生产安全…...
harmonyos面试题
你在项目中用过线程通信吗,线程是怎么进行通信的? 页面的生命周期有哪些? UAbility的生命周期呢? 你在项目中使用首选项主要用来数什么 组件通信的方式有息些 弹室UI是怎么在页面UI中使用的 常用的修饰符有愿些介绍一下 缓冲区是什么与16进制和数组有什么关…...

神经网络介绍及其在Python中的应用(一)
作者简介:热爱数据分析,学习Python、Stata、SPSS等统计语言的小高同学~ 个人主页:小高要坚强的博客 当前专栏:Python之机器学习 本文内容:神经网络介绍及其在Python中的线性回归应用 作者“三要”格言:要坚…...

数据流处理技术与Flink框架
一数据流 数据流定义: 数据流(Data Stream)是指数据以连续不断的方式到达和处理的序列。在现实世界中,许多数据来源都是以流的形式存在,比如: 1. 用户行为:用户在网站上的点击流、移动应用中…...
qt中QTatlewidget类常用操作表格的函数有哪些?
在Qt中,QTableWidget 类提供了丰富的函数来操作表格数据。以下是一些常用的操作表格的函数: 1. 初始化与配置 构造函数:QTableWidget(int rows, int columns, QWidget *parent nullptr):创建一个指定行数和列数的表格控件。设置…...

Linux上的C/C++编程
Linux上的C/C编程 yum软件包管理器Linux编辑器-vimvim命令模式指令集vim末行模式指令集 gcc/g的使用Linux自动化编译工具-make/MakefileLinux调试器-gdb调试命令 多人合作工具git yum软件包管理器 yum 是Linux上常用的包管理器,类似于Windows上的“应用商店”。 语…...

注意 秋季饮酒的正确打开方式
选择合适的白酒1.秋季气候干燥,适合选择一些口感醇厚、温润的白酒。比如酱香型白酒,它具有浓郁的香气和醇厚的口感,能在秋季给你带来温暖的感觉。2.浓香型白酒也是不错的选择,香气扑鼻,口感绵甜,能为秋季增…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...