LinuxC——字符串

汇川EASY系列之以太网通讯(套接字socket做主站) 本文讲解汇川Easy系列使用以太网套接字socket通讯,本例中EasyPLC做主站。文中按步进行操作。细节明确。 阅读详情
一、字符串的简介

字符串是一个或者多个字符的序列。

例如:"Hello world!"

【注】:双引号不是字符串的一部分,双引号只是告诉编译器它括起来的是一个字符串。

在C语言中没有字符串变量类型,所以我们需要借助一个char类型的数组类存放一个字符串,并且在字符串的末尾加入一个‘\0’来标记字符串的结束。

二、定义一个字符串

这里简单地介绍一下数组,数组是由连续的存储单元组成的,字符串中的字符被存储在相邻的存储单元中,每个存储单元存储一个字符。

来看一个例子

char a[6] = "hello";

hello由五个字符组成,由于在字符串后面加上‘\0’来标记字符串的结束,所以需要给a分配6个存储单元。

同样的也可以这样定义一个字符串

char b[6] = {'h', 'e', 'l', 'l', 'o', '\0'};
三、打印字符串

打印字符串用printf函数来打印,但是得需要用%s来告诉printf()打印的是一个字符串。

例如:

printf("%s\n", a);
四、字符串的拷贝、连接、比较

字符串的拷贝

因为字符串是存在char类型的数组中的,所以在定义好之后就不能用“=”来给这个字符串赋值了。此时如果我们想将一个字符串赋值给另一个字符串,这个时候需要使用strcpy()函数。

我们在使用一个函数的时候需要知道这个函数的返回值和参数类型,如果我们忘记了某个函数的一些属性,我们可以在ubuntu终端输入 man 函数名

例如:

man strcpy;

输入以上的内容就会自动跳到这个函数部分,我们可以看到它需要的头文件和参数类型。如图所示


现在我们就来使用这一个函数,代码如下。

#include <stdio.h>
#include <string.h>   //加入这个函数需要的头文件

int main()
{
	char a[10] = "hello";
	char b[10] = "world!";
	
	printf("before copy a = %s, b = %s\n", a, b);
	strcpy(a, b);
	printf("after copy a = %s, b = %s\n", a, b);
	return 0;
}

在使用这个函数的时候需要注意的就是,a数组的长度一定要能够容纳b数组中的内容。

执行这段代码的结果是这样的


字符串的连接

怎样将两个字符串连接成一个字符串呢,这个时候就需要用到strcat这个函数了,这个函数需要的头文件也是string.h

我们也来看一个例子:

#include <stdio.h>
#include <string.h>

int main()
{
	char a[20] = "hello ";//a数组必须能够存下连接之后的字符串,所以a需要足够大。
	char b[10] = "world";

	printf("before strcat a = %s, b = %s\n", a, b);

	strcat(a, b);

	printf("after strcat a = %s, b = %s\n", a, b);

	return 0;
}

使用这个函数的时候需要注意连接之后的字符串是存放在第一个参数中的,所以第一个参数的数组的长度得足够大,否则连接之后就会出现问题。

以下是连接之后的结果。


字符串的比较

字符串之间也能够比较大小,但是不能使用关系运算符来比较它们,要比较字符串就得借助strcmp函数。

我们一起来看看这个的返回值类型,以及参数类型等属性。

在终端输入 man strcmp


我们可以看到这个函数的返回值是一个int类型的数,然后看到return value 这一块,它对函数的返回值做了一些说明。返回一个整数来和0比较,小于, 等于或者大于0这三种情况分别对应第一个参数小于第二个参数,两个参数相同,第一个参数大于第二个参数。

同样的我们也用一个例子来说明。

#include <stdio.h>
#include <string.h>

int main()
{
	char a[5] = "abc";
	char b[5] = "abcd";
	char c[5] = "abc";
	char d[5] = "ab";


	int result1, result2, result3;

	result1 = strcmp(a, b);
	result2 = strcmp(a, c);
	result3 = strcmp(a, d);

	printf("result1 = %d\n", result1);
	printf("result2 = %d\n", result2);
	printf("result3 = %d\n", result3);
	return 0;
}

最后得到的结果是这样的


得到的数字会根据编译环境的不同而变化,但是只要小于0,就是第一个参数小于第二个参数。大于0就表示第一个参数大于第二个参数。等于0就表示这两个参数是一样的。


Python之ae-toolbox包语法、参数和实际应用案例 ae-toolbox(全称 after-effects-toolbox)是 Python 生态中专门用于 Adobe After Effects(AE)自动化操作 的工具包,基于 AE 的 ExtendScript(JSX)桥接技术,实现 Python 与 AE 的跨语言通信。 阅读详情

相关推荐

告别‘小目标’丢失!手把手复现DNANet红外检测网络(PyTorch版)

本文详细介绍了如何使用PyTorch从零实现DNANet红外小目标检测网络,重点解析了DNIM模块和CSAM注意力机制的设计与实现。通过实战教程,帮助开发者解决红外小目标检测中的特征提取和训练调参难题,适用于军事侦察、安防监控等场景。

weixin_28701593的博客 252

linux+c+定义字符串,C语言字符串操作总结大全(超详细)

1)字符串操作strcpy(p, p1) 复制字符串strncpy(p, p1, n) 复制指定长度字符串strcat(p, p1) 附加字符串strncat(p, p1, n) 附加指定长度字符串strlen(p) 取字符串长度strcmp(p, p1) 比较字符串strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字符串strchr(p, c) 在字符串中查...

weixin_42512723的博客 900

Open3D:读写点云与可视化(C++)

迭代 //Open3D #include "Open3D/Open3D.h" //Eigen #include "Eigen/Dense" void testOpen3D::xjGetInformation(const QString &pcPath) { /* read PC */ auto cloud_ptr = std::make_shared<open3d::geometry::PointCloud>(); if (!open3d::io::ReadPointCl

累了就要打游戏 1万+

Linux系统的shell脚本——变量

shell脚本变量的定义,变量类型以及使用

New_Worlds的博客 3891

数学文化赏析MOOC笔记【2023】

深圳大学UOOC课程《数学文化赏析》课程笔记

simplenthpower的博客 1751

技术解析:ChangeFormer——基于Transformer的孪生网络在遥感变化检测中的创新应用

本文深入解析了ChangeFormer模型在遥感变化检测中的创新应用,该模型基于Transformer架构和孪生网络(Siamese Network),显著提升了变化检测的精度和效率。通过详细的技术实现和实战经验分享,展示了其在建筑物变化、森林监测等场景中的卓越表现,为相关领域的研究和应用提供了有力工具。

weixin_29102619的博客 496

基于linux的C语言基础

我们在使用C语言时总会用到变量,但是什么是变量呢,怎么样去定义变量呢,如何输入变量呢?

single_Lilinhao的博客 475

VisionPro 机器视觉案例 之 硬币识别

CogPMAlignTool模板匹配工具 掩模

机器视觉李小白的博客 1892

Linux C语言 07-字符串

本节关键字:字符串、字符串数组,相关C库函数:strcat、strncat、strchr、strcmp、strncmp、strcoll、strcpy、strncpy、strrchr、strspn、strstr、strcspn、strlen、sprintf、memset、memcpy

Tianwx的博客 196

无实习经验?IT应届生简历封神思路:把校园经历写成offer收割机

摘要: IT应届生无实习经历如何打造竞争力简历?本文揭秘“无实习简历封神指南”,通过四大步骤将校园经历转化为HR认可的硬核技能: 素材挖掘:课程设计、个人项目、社团活动、竞赛证书都是隐藏的“实战经验”,用STAR法则细化成果。 技能转化:匹配岗位JD关键词,用“动词+量化结果”包装经历(如“优化查询效率30%”)。 避坑指南:避免流水账、夸大技能或堆砌无关经历,聚焦技术能力与岗位需求。 核心逻辑:HR看重潜力而非经验,用校园经历证明学习能力、问题解决能力和技术落地能力。 无实习≠无竞争力,学会“翻译”经历,

通俗易懂学IT 422

【异常】安装OpenClaw遇到 Windows环境pnpm安装node-llama-cpp postinstall生命周期脚本执行失败完整解决方案

摘要: Windows环境下使用pnpm安装node-llama-cpp时,postinstall脚本执行失败(错误码3221225477),主要因缺少C++编译工具链或预构建二进制下载失败。解决方案: 基础排查:确保管理员权限、Node.js ≥18、路径无中文; 安装编译工具:推荐Visual Studio的“C++桌面开发”组件或windows-build-tools; 环境变量配置:强制CPU模式+国内镜像(NODE_LLAMA_CPP_FORCE_CPU=true,镜像地址替换为国内源); pnp

奶爸的编程之路,也就一周冷个三天 618

大数据开发从入门到精通Linux基础之字符串讲解

给大家介绍一下关于大数据开发之Linux基础字符串的详细介绍,下面一起跟随小编来详细介绍一下吧。 一、字符串表示形式 字符串是Shell编程中最常用的数据类型,可以使用3种形式表示。 1.单引号形式 name='xiaoqian' 在使用此形式表示字符串时,需注意以下几点。 单引号中的任何字符都会原样输出。 单引号字符串中的变量是无效的。 单引号字符串中不能出现单引号。 2....

大数据开发 378

YOLOv8改进 | Conv篇 | 利用YOLOv9的GELAN模块替换C2f结构(附轻量化版本 + 高效涨点版本 + 结构图)

本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的GELAN模块来改进YOLOv8中的C2f,GELAN融合了CSPNet和ELAN机制同时其中利用到了RepConv在获取更多有效特征的同时在推理时专用单分支结构从而不影响推理速度,同时本文的内容提供了两种版本一种是参数量更低涨点效果略微弱一些的版本(参数量V8n下降80w,计算量为6.1GFLOPs),另一种是参数量稍多一些但是效果要不参数量低的效果要好一些(均为我个人整理),提供两种版本是为了适配不同需求的读者,具体选择

Snu77的博客 7567

LinuxC--计算字符串中子串数

LinuxC--计算字符串中子串数 #include<stdio.h> #include<stdlib.h> #include<string.h> int Count(char* str,char* chdstr) { int sum=0; char* first_str=str; while(first_str=strstr(first_str,chdstr)) { sum++; first_str=first_str+strlen(chdstr); } return

wxd296931635的博客 472

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LinuxC字符串处理

linux下的标准库字符串处理相关函数

未来的路 1538

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LinuxC学习之整型数转字符串

学习笔记: 1. #if 0  ..... /* 包含的语句永恒为假,不参与编译*/ end if 2. 函数宏定义的使用技巧 #define SWAP(a,b)        \ /*连接符*/   do{                      \   char temp = b;       \ b = a;               \ a = temp; 

u010911350的专栏 1470

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LinuxC学习之字符和字符串操作

本文归纳了C语言中可对字符与字符串进行处理处理的一些常用库函数,可供学习时参考查阅。 一、处理单个字符的库函数 头文件:cpype.h *int  isalnum(int c) : 检查参数c是不是一个字母或数字,是则返回1,否则返 回0;(参数c是一个字符变量,但在C语言中,字 符变量等同于其对应的ASCII码值,故参数也可以是一个ASCII码值的整型数值,下同) *  in

u010911350的专栏 571

LinuxC简谈之字符串函数及其实现

研究了一段时间字符串后,我总结了一些关于字符串函数的理解,字符串函数也称为字符串处理函数,如字符串求长度(strlen)、字符串复制(strcpy)、字符串连接(strcat)、字符串比较(strcmp)等等。在这里我将介绍一下这些字符串函数的原型以及我自己实现这些功能的函数及用法。

不落风渊的博客 315

简单LinuxC程序关于逆序一个中英混合字符串

题目:逆序一个中英混合字符串,此字符串包含字母字符、数字字符、空格字符、标点符号等英文字符以及中文字符,要求从键盘输入

不落风渊的博客 399

LinuxC语言字符串函数 - memset

之前做避障车用到了超声波模块,总结了下资料 1、本模块性能稳定,测度距离精确,模块高精度,盲区小。产品应用领域:机器人避障物体测距液位检测公共安防停车场检测。 2、主要技术参数: 1:使用电压:DC---5V 2:静态电流:小于2mA 3:电平输出:高5V 4:电平输出:底0V 5:感应角度:不大于15...

CodeAllen嵌入式 3万+

linux下c 代码中中文字符串,Linux下C语言实现字符串子串替换

由于LINUX C没有对字符串子串替换功能,所以我自己写了一个str_replace函数,实现了字符串替换.请大家参考./** FUNCTION : str_replace* ABSTRACT : replace child string in a string.* PARAMETER :* char* str the string that ...

weixin_32771631的博客 425

简单LinuxC程序关于任意长整数相加(字符串实现)

Linux环境下,C语言中整数类型最长的是long long类型,占8个字节,即使如此,其能表示的数仍是有限的。如果想要实现更大的整数相加或其他运算,就不能只用long long类型或者普通整型。我们可以使用字符串来表示整数,可以由我们规定位数,这样就可以实现更大的(某种意义上的任意长)整数相加减。在这里,我使用字符串实现的是两个任意长整数相加。由于是使用的字符串,需要考虑的情况很多。下面我罗列几个需要注意的点:1、输入的问题,2、是否是数字,3、对齐的问题,4、进位的问题。

不落风渊的博客 1823

【Linux】纯C环境下字符串的处理

在LinuxC下,是没有string这个头文件的,比如如下代码: #include #include int main(){ string A="aaa"; string B="bbb"; return 0; } 由于纯C的环境下,连字符串的概念都没有,以上的代码是直接过不了编译的。 而对于string.h这个头文件,虽然有,但同样是不带string字符串变量的声明,如下的代码

编程记录,亲测有效 3190

Linux c 源码(StrDelAllSpace:去除字符串所有空格)(strpack)

Linux c 源码(StrDelAllSpace:去除字符串所有空格) void pubStrDelAllSpace(char *sStr) { int len,k,i; if (sStr == NULL) return; len = strlen(sStr); k = 0; for (i=0; i { if ((sStr[i] != ' ')&&(sSt

志存高远 3259

Linux下C语言实现字符串子串替换

由于LINUX C没有对字符串子串替换功能,所以我自己写了一个str_replace函数,实现了字符串替换. 请大家参考. /*  * FUNCTION     : str_replace  * ABSTRACT     : replace child string in a string.  * PARAMETER    :  *       char* str

li_qcxy的专栏 913

简单LinuxC程序关于实现识别字符串中合法的帧(字符串输入)

题目: 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来. 例如:帧头和帧尾分别是head和tail 字符串”hdbchddheadhfdjhfdtailvcgbfgby”中headhfdjhfdtail是合法帧。

不落风渊的博客 461
上一篇: LinuxC——数据类型
下一篇: LinuxC——运算符
技术小白yhx
博客等级 码龄10年 443粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值