当前位置: 首页 > news >正文

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版本&#xff1a;2.6.13<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>在实体上添加校验注解&#xff0c;例如&#xff1a; NotBlankNotEmpty…...

Leetcode 162.寻找峰值

峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums&#xff0c;找到峰值元素并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] nums[n] -∞ 。 你必须实现时间复杂度为 O(…...

c语言:知识补充

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

Dapper介绍及特性

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

LeetCode 149. 直线上最多的点数

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

案例研究丨国控星鲨利用DataEase释放数据潜能,重塑业务视野

国药控股星鲨制药&#xff08;厦门&#xff09;有限公司&#xff08;以下简称为国控星鲨&#xff09;始创于1952年&#xff0c;前身为厦门鱼肝油厂&#xff0c;距今已经有70余年历史&#xff0c;是国家商务部认定的“中华老字号”企业。2011年&#xff0c;国药控股与厦门轻工集…...

网络基础概念和 socket 编程

网络基础概念和 socket 编程 学习目标&#xff1a; 了解 OSI 七层模型、TCP/IP 四层模型结构了解常见的网络协议格式掌握网络字节序和主机字节序之间的转换理解 TCP 服务器端通信流程理解 TCP 客户端通信流程实现 TCP 服务器端和客户端的代码 推荐一个非常好的学习资料仓库 协…...

TypeScript 中的接口、泛型与自定义类型

TypeScript 是一种超集语言&#xff0c;它为 JavaScript 添加了静态类型检查。通过 TypeScript&#xff0c;开发者可以获得更好的工具支持&#xff0c;并且能够编写出更加健壮的代码。本文将探讨 TypeScript 中的几个关键特性&#xff1a;接口、泛型以及如何创建自定义类型。 …...

常州威雅学校:跟随这场音乐盛宴,溯回她的音乐之路

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

【YashanDB知识库】由于hist_head$中analyze time小于tab$中analyze time导致的sql语句执行慢

本文内容来自YashanDB官网&#xff0c;具体内容请见https://www.yashandb.com/newsinfo/7459465.html?templateId1718516 问题现象 某局点yashandb cpu使用率100%&#xff0c;经线上分析是由于几个sql执行慢&#xff0c;其中一个sql为简单的单行等值绑定变量过滤排序。 经分…...

【有啥问啥】深度理解主动学习:机器学习的高效策略

深度理解主动学习&#xff1a;机器学习的高效策略 在大数据时代&#xff0c;数据量的爆炸性增长与有限的标注资源之间的矛盾日益凸显。如何高效地利用标注资源来训练高质量的模型&#xff0c;成为了机器学习领域亟待解决的问题。主动学习&#xff08;Active Learning, AL&…...

智能守护者X100 - 自动化生产线智能机器人安全监控管理系统

1.产品介绍 产品名称: 智能守护者X100 - 自动化生产线智能机器人安全监控管理系统 主要功能: 全方位实时监控:智能守护者X100采用高清摄像头与红外夜视技术,实现对自动化生产线及智能机器人的360无死角监控。系统能自动识别并追踪生产线上的机器人活动轨迹,确保生产安全…...

harmonyos面试题

你在项目中用过线程通信吗&#xff0c;线程是怎么进行通信的? 页面的生命周期有哪些? UAbility的生命周期呢? 你在项目中使用首选项主要用来数什么 组件通信的方式有息些 弹室UI是怎么在页面UI中使用的 常用的修饰符有愿些介绍一下 缓冲区是什么与16进制和数组有什么关…...

神经网络介绍及其在Python中的应用(一)

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

数据流处理技术与Flink框架

一数据流 数据流定义&#xff1a; 数据流&#xff08;Data Stream&#xff09;是指数据以连续不断的方式到达和处理的序列。在现实世界中&#xff0c;许多数据来源都是以流的形式存在&#xff0c;比如&#xff1a; 1. 用户行为&#xff1a;用户在网站上的点击流、移动应用中…...

qt中QTatlewidget类常用操作表格的函数有哪些?

在Qt中&#xff0c;QTableWidget 类提供了丰富的函数来操作表格数据。以下是一些常用的操作表格的函数&#xff1a; 1. 初始化与配置 构造函数&#xff1a;QTableWidget(int rows, int columns, QWidget *parent nullptr)&#xff1a;创建一个指定行数和列数的表格控件。设置…...

Linux上的C/C++编程

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

注意 秋季饮酒的正确打开方式

选择合适的白酒1.秋季气候干燥&#xff0c;适合选择一些口感醇厚、温润的白酒。比如酱香型白酒&#xff0c;它具有浓郁的香气和醇厚的口感&#xff0c;能在秋季给你带来温暖的感觉。2.浓香型白酒也是不错的选择&#xff0c;香气扑鼻&#xff0c;口感绵甜&#xff0c;能为秋季增…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?

FTP&#xff08;File Transfer Protocol&#xff09;本身是一个基于 TCP 的协议&#xff0c;理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况&#xff0c;主要原因包括&#xff1a; ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...

CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)

漏洞概述 漏洞名称&#xff1a;Apache Kafka Connect JNDI注入导致的远程代码执行漏洞 CVE编号&#xff1a;CVE-2023-25194 CVSS评分&#xff1a;8.8 影响版本&#xff1a;Apache Kafka 2.3.0 - 3.3.2 修复版本&#xff1a;≥ 3.4.0 漏洞类型&#xff1a;反序列化导致的远程代…...