C语言字符串及其函数

2023-10-27

C语言中没有类似于C++或Java中的string类型,如果要在C中表示字符串,可用字符数组的形式,数组的概念可戳此链接了解。

在C++中,string类库可以更简单的表示和使用字符串,可戳此链接了解string类。

C语言中字符串是以空字符\0结尾的char类型数组。本文简单讲解它的基本知识和函数。

字符串

字符串通常用双引号"括起来,称之为字符串常量,编译器会自动在末尾加上空字符\0,例如

char str[50] = "Hello World!";

字符串的空格也会囊括在内,也可按照下面这种方式创建

char str[50] = "Hello " "World!";

多个双引号之间会自动串联起来,上面两种方式等价。方括号中的数字可以省略,编译器会自动计算数组大小,如

char str[] = "Hello World!";

字符串也可按照一般数组的方式定义,如

char str[50] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '\0'};

这种方式比较麻烦,而且尤其要注意最后的空字符\0

空字符\0也占位置,指定数组大小时要保证是字符串长度加1。

还可用指针的方式创建字符串,如

char * ptr = "Hello World!";

字符串函数

C语言库提供了多个字符串处理函数,它们都包含在string.h中,因此要使用这些函数必须包含这个头文件

#include <string.h>
  1. strlen()

统计字符串长度,如

strlen(str);

返回字符串长度值。

  1. strcat()

用于字符串拼接,把字符串str2附加在字符串str1后面,字符串str2不变,如

strcat(str1, str2);

返回第1个字符串地址。

要注意字符串str1的大小能够容纳下拼接后的字符串。

  1. strncat()

同样用于字符串拼接,并指明添加字符数,如

strncat(str1, str2, 5);

在加到第5个字符或遇到空字符时停止。

可弥补strcat()函数的不足。

  1. strcmp()

按照字典序(ASCII码)依次比较两个字符串的字符,如

strcmp(str1, str2);

str1str2前面时,返回负数;如果相同返回0;如果在后面返回正数。返回的值取决于实现。

该函数比较的是字符串,而不是字符。比较字符可直接使用逻辑运算符。

  1. strncmp()

指定需要比较的长度,如

strncmp(str1, str2, 5);

限定函数只比较前5个字符。

strcmp()函数会一直比较到末尾。

  1. strcpy()

字符串拷贝,相当于字符串的赋值操作,如

strcpy(str1, str2);

把字符串str2拷贝到字符串str1str1称为目标字符串str2称为源字符串

要注意源字符串的大小能否容纳得下。

该函数返回的类型是char *,是第1个参数的地址。

该函数还可指定拷贝的位置,如

strcpy(str1 + 5, str2);

可以保留str1第0到第4个位置的字符。

  1. strncpy()

该函数同样是拷贝字符串,并可指定拷贝的最大字符数,如

strncpy(str1, str2, 5);

str2中的第5个或空字符之前的字符拷贝到str1中。

拷贝的副本中不一定有空字符\0
弥补strcpy()函数的不足

  1. sprintf()

该函数在stdio.h中,而不是string.h。把数据写入字符串。

该函数第一个参数是目标字符串地址,其余参数和printf()相同。戳此处查看print()函数的用法。

输入与输出

C语言字符串有专门的输入和输出函数,详细可戳此链接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言字符串及其函数 的相关文章

随机推荐

  • Spark优化,多线程提交任务,提升效率

    优化背景 for循环提交4次任务 会触发4个Job 由于Driver的单线程运行及Spark的任务调度决定了4个Job是串行执行 但这个4个任务是无关的 可以并行执行 优化思路 通过线程池并行提交Job Driver端不卡顿 具体实现 va
  • 基于GPUMD的NEP机器学习势函数—二氧化硅融化

    关注 M r m a t e r i a l color Violet rm Mr material Mr material
  • Date类、LocalDate类基本操作

    Date类和LocalDate类 Date类用来表示时间点 LocalDate类是作为日历表示法的类 示例 package riqi test import java time LocalDate import java util Date
  • 老人防跌倒报警系统,及时防止跌倒给老人带来的伤害-新导智能

    跌倒是我国65岁以上老年人因伤害逝世的主要原因 据统计 老年人产生伤口性骨折的主要原因是跌倒 年龄越大 产生跌倒及因跌倒而受伤或逝世的危险越高 在老年人居家生活 外出活动和机构养老中 苏州新导推出的防老人跌倒系统需求综合采取适老化改造 自我
  • 测试用例设计方法---流程图法

    学习目标 掌握流程图法的适用范围 1 什么是流程图法 流程分析法主要是针对测试场景类型属于流程测试场景的测试项下的测试子项进行设计 2 流程图法设计测试用例步骤 第一步 详细了解需求 第二步 根据需求说明或界面原型 找出业务流程的各个页面以
  • 目标检测YOLO实战应用案例100讲-智能目标检测系统在FPGA中的设计与实现

    目录 基于FPGA的目标检测系统的设计与实现 深度学习硬件加速技术研究现状 相关理论与技术概述
  • Parent name: cv2.cv2. Submodule name: cv2

    Bindings generation error Submodule name should always start with a parent module name Parent name cv2 cv2 Submodule nam
  • js ajax 传输list,jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签...

    废话不多说了 直接给大家贴代码了 具体内容如下所示 js function myBtn f var cnt myCnt val syncAjax myAjax html cnt cnt function result if 100 resu
  • sklearn中digits手写字体数据集介绍

    1 导入 from sklearn import datasets digits datasets load digits 2 属性查看 digits bunch类型 print digits keys images data target
  • 【Docker实战】使用Docker部署Tomcat

    Docker实战 使用Docker部署Tomcat 一 Tomcat介绍 1 Tomcat简介 2 Tomcat特点 3 Tomcat容器部署的优点 4 Tomcat的配置文件 二 检查本地环境 三 检查本地Docker环境 1 检查本地D
  • VLAN虚拟局域网

    一 虚拟局域网 VLAN Virtual Local Area Network 定义 VLAN 是一种将局域网内的设备逻辑地划分成一个个网段从而实现虚拟工作组的技术 VLAN 能够隔离广播域 VLAN 内的主机之间可以直接通信 而 VLAN
  • “Argument list too long”解决方法

    1 背景 Linux下使用cp mv rm等命令时经常会碰到 Argument list too long 错误 这主要是因为这些命令的参数太长 即文件个数过多 2 解决方案 Argument list too long 这个问题的解决主要
  • 升压电路(BOOST)与降压电路(BUCK)

    一 电路中产生电流的条件是 1 电路里必须有电源供电 2 电路必须形成闭合回路 降压元器件 升降压电路构成的核心元器件 1 电感 储存能量 电感是无法突变的 工作状态是线性的 2 二极管 3 mos管 首先先分清楚mos是N mos还是P
  • 真题详解(归并)-软件设计(五十三)

    真题详解 UML部署图 软件设计 五十二 https blog csdn net ke1ying article details 130233656 语句覆盖 lt 判定覆盖 lt 条件覆盖 lt 路径覆盖 2 ISO IEC 9126软件
  • 互联网支付系统整体架构详解(转)

    https www cnblogs com zhjh256 p 6763978 html 在互联网产品运营中 有很多小伙伴或许会遇到这样的困扰 产品好不容易推出来了 流量成本节节攀升 用户的活跃度 留存度却持续下降 因此在瞬息万变的互联网产
  • tomcat和nginx的日志记录请求时间

    当系统卡顿时候 我们需要分析时间花费在哪个缓解 项目的后端接口可以记录一些时间 此外 在我们的tomcat容器和nginx网关上也可以记录一些有关请求用户 请求时间 响应时间的数据 可以提供更多的信息以便于排查问题 1 tomcat日志 s
  • 2022十四届蓝桥杯校赛题解(Python大学组)

    2022十四届蓝桥杯校赛题解 Python大学组 填空题 二进制2022 经历天数 考查datetime库 16进制数 优先动态规划 不同质数查找 编程题 拷贝问题 筛选重复单词 回文串 图形动态规划 交换代价问题 附录 常见方法 考试直接
  • Linux统计代码量命令cloc

    记录一下Linux中一个非常好用的代码量统计命令 cloc 安装步骤 sudo apt get install cloc 使用方法 进入到要统计的工程根目录 cloc 运行结果
  • 【以太坊源码】mpt实现

    转载自 click here trie encoding go encoding go主要处理trie树中的三种编码格式的相互转换的工作 三种编码格式分别为下面的三种编码格式 KEYBYTES encoding这种编码格式就是原生的key字
  • C语言字符串及其函数

    C语言中没有类似于C 或Java中的string类型 如果要在C中表示字符串 可用字符数组的形式 数组的概念可戳此链接了解 在C 中 string类库可以更简单的表示和使用字符串 可戳此链接了解string类 C语言中字符串是以空字符 0结