C语言学习(二十八)---字符串相关函数

news2024/9/23 21:25:35

在上一节的内容结束后,有关指针的内容就告一段落了,指针是开发中非常重要的一环,大家务必要对其深入理解并且掌握,今天我们将继续往下学习,主要学习字符串操作相关的函数,分为不限制长度限制长度两种,好了,话不读说,开整!!!

不限制长度

strlen

这个函数可以说是我们最早开始接触到的,并且和字符串有关的函数之一了,我们在C语言学习(十一)中就对其进行了介绍,其主要功能为:

计算字符串的长度,以\0为字符串结束标志

比如以下两个字符串定义方式,使用strlen后返回值是否相同呢,代码如下:

#include<stdio.h>
#include<string.h>
int main()
{
    char a[] = {'a','b','v'};
    char b[] = "abv";
    printf("%d %d",strlen(a),strlen(b));
    return 0;
}

当然是不同的了,如果你回答错了可要回去自己补课喽,链接直达,在此不阐述了,编译结果如下:
在这里插入图片描述
在此处当然是要讲点不一样的了,那么strlen返回的数值带不带符号呢,如下代码所示,你猜会打印出什么结果呢:

#include<stdio.h>
#include<string.h>
int main()
{
    char a[] = "abcdw";
    char b[] = "abv";
    if (strlen(b) - strlen(a) > 0)
    printf("无符号");
    else
    printf("有符号");
    return 0;
}

我们先查看结果:
在这里插入图片描述
???????????????????
王德发!!!
我们先查看该函数的说明:
在这里插入图片描述
可见返回了一个size_t类型的数据,这是什么呢,我们在vscode中找到它并打开,可以发现其是一个无符号整数在这里插入图片描述
因此,上述的虽然结果为-2,当将其转为无符号数必然为正数,所以才会出现上述的结果。

strcpy

首先查看该函数的说明:
在这里插入图片描述
其作用是:

讲源地址的字符内容拷贝到目的地地址中

例如以下代码:

#include<stdio.h>
#include<string.h>
int main()
{
    char sou[] = "abcd";
    char des[10] = "0";
    strcpy(des,sou);
    return 0;
}

我们进行调试,可以看到,再拷贝前,目的地des中的内容为:
在这里插入图片描述
步进后可以见讲源地址sou中的内容拷贝到目的地地址des中:
在这里插入图片描述
并且这种拷贝将字符串结束标志\0也拷贝过来

strcmp

该函数的说明如下:
在这里插入图片描述
可见其功能为:

比较俩个字符串
其返回值为如下图
在这里插入图片描述

如以下代码的打印结果是什么呢:

#include<stdio.h>
#include<string.h>
int main()
{
    char a[] = "adc";
    char b[] = "aed";
    char c[] = "abd";
    char e[] = "adc";
    int res1 = strcmp(a,b);
    int res2 = strcmp(a,c);
    int res3 = strcmp(a,e);
    printf("%d %d %d\n",res1,res2,res3);
    return 0;
}

查看结果:
在这里插入图片描述
从结果中,我们看到,该函数是按位进行比较的,不相等则继续向下比较直至比完最后一位为止
需要注意的是:

返回值并非固定的,在不同的编译器下返回值不同

如在Linux下的gcc编译器的结果如下:

在这里插入图片描述
从该值中可以看到其返回的正好是字符之间的ASCII码值之差

strcat

查看其使用说明:
在这里插入图片描述
如以下代码:

#include<stdio.h>
#include<string.h>
int main()
{
    char des[20] = "#####";
    char sou[] = "c_learn";
    strcat(des,sou);
    printf("%s\n",des);
    return 0;
}

编译得到以下结果:
在这里插入图片描述

限制长度

上述所讲述的即为几个字符串相关的函数,当然这些函数是不限制长度的与此相对应的还有限制长度的字符串函数,此处仅以strcpy为例,其余大家可以自行查看学习:

strncpy

查看该函数说明:
在这里插入图片描述
其功能为:

从源地址中拷贝num个字节到目的地地址中

如以下代码:

#include<stdio.h>
#include<string.h>
int main()
{
    char des[20] = "#####";
    char sou[] = "c_learn";
    strncpy(des,sou,5);//将拷贝c_lear拷贝到des中
    printf("%s\n",des);
    return 0;
}

编译查看结果:
在这里插入图片描述
除此以外,我们也看到了:
拷贝是将目的地地址中的内容覆盖掉了,因此使用时要注意。

上述内容即使今天的全部内容了,感谢大家的观看。
如果方便,辛苦大家点个赞和关注哦!
您的点赞或评论或关注是对我最大的肯定,谢谢大家!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/697031.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vetcor使用移动构造取代拷贝构造实现push_back

昨天说到&#xff1a;vector变量push_back一个对象或变量的时候&#xff0c;本质上是执行拷贝构造&#xff0c;但我想使用移动构造&#xff0c;而不是拷贝构造&#xff0c;本文就修改调试过程&#xff0c;详细分析如何实现移动构造。 昨天的代码如下&#xff1a;(如果有人想测…

Keil5 创建工程

一、 在桌面新建一个 TEST 的文件夹&#xff0c;然后在 TEST 文件夹里面新建 USER 文件夹&#xff0c;将工程名 字设为 test&#xff0c;保存在这个 USER 文件夹里面,选择对应芯片的安装包 启动代码作用&#xff1a; 1、堆栈&#xff08;SP&#xff09;的初始化&#xff1b; 2…

java.util.concurrent.Executionexception 异常

报错截图&#xff1a; 今天运行时发生了如下报错。自己捣鼓半天也没发现问题出在哪儿&#xff0c;感谢大佬的帮助&#xff0c;记录下来防止再犯。。 caused by org.apache.flink.client.program.programInvocationException: Job failed。程序调用异常。网上找了很多解决方法…

Qt 中线程池的使用

1. 线程池的原理 我们使用线程的时候就去创建一个线程&#xff0c;这样实现起来非常简便&#xff0c;但是就会有一个问题&#xff1a;如果并发的线程数量很多&#xff0c;并且每个线程都是执行一个时间很短的任务就结束了&#xff0c;这样频繁创建线程就会大大降低系统的效率&…

第14章-Python-人工智能-语言识别-调用百度语音识别

百度语音识别API是可以免费试用的&#xff0c;通过百度账号登录到百度智能云&#xff0c;在语音技术页面创建的应用&#xff0c;生成一个语音识别的应用&#xff0c;这个应用会给你一个APIKey和一个Secret Key&#xff0c;如图14.1所示。 我们在自己的程序中用 API Key 和 Secr…

轻松搞定 Git

目录 前言 一、下载 二、安装 三、基本使用 四、git的基本原理 五、通过案例学习git 5.1 创建空的项目文件夹 5.2 初始化git 5.3 创建项目文件 5.4 查看git状态 5.5 添加到暂存区 5.6 提交到本地仓库 5.7 查看git提交到本地仓库的记录 5.8 .gitignore文件 六、分…

mysql基础2——增、删、改、查

文章目录 一、DDL操作1.1 数据库操作1.2 表操作1.3 用户操作1.4 查看命令show1.5 获取帮助 二、DCL操作2.1 用户授权2.2 查看授权2.3 取消授权 三、DML操作3.1 插入insert3.2 查询select3.2.1 常规查询3.2.2 条件查询3.2.3 order by用法3.2.4 group by用法3.2.5 内连接&左连…

输入年月日,日期; 求这个日期在这一年中是第几天

输入年月日,日期; 求这个日期在这一年中是第几天 1.问题 输入年月日,日期; 求这个日期在这一年中是第几天 2.代码 利用Java中的库函数 LocalDate 是Java 8引入的一个日期类&#xff0c;用于表示日期&#xff0c;不包含时间和时区信息 到时候直接调用方法可以获取对应的天数 p…

javaee ajax请求后台 不刷新页面

jsp页面 Reg.jsp <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&qu…

【Python】经过一个点P3的一条直线垂直于已知直线,求交点坐标

一个高中数学题目&#xff0c;已经点P1和点P2构成直线&#xff0c;经过P3点做已知直线的垂线&#xff0c;求垂线与已知直线的交点坐标。 p1 [100, 15] p2 [16, 85] p3 [-50, 100] if p2[0] - p1[0] 0:# p1 p2 构成垂线&#xff0c;那么垂直线就是一条水平线x p1[0]y p3…

kafka3.x 入门 常用命令(二)

创建主题 kafka-topics.sh --bootstrap-server hadoop100:9092 --create --partitions 1 --replication-factor 3 --topic first查看主题列表 kafka-topics.sh --bootstrap-server hadoop100:9092 --list查看主题详情 kafka-topics.sh --bootstrap-server hadoop100:9092 --…

element-ui—textarea多行输入框—字数限制及优化

属性作用 show-word-limit &#xff1a;是否显示数字显示 maxlength“300”&#xff1a;设置最大值 class“public-showWordLimit”&#xff1a; 优化数字的显示的位置 :autosize “{ minRows: 2, maxRows: 8 }” &#xff1a;根据输入字符长度设置动态高度 2.代码案例 <…

vue3+vite安装配置element-plus

配置 element-plus 1. 安装 yarn add element-plus element-plus/icons-vue2. 按需引入插件 yarn add unplugin-vue-components unplugin-auto-import -D3. 配置vite.config.ts // vite.config.ts import AutoImport from unplugin-auto-import/vite import Components fro…

MySQL数据库的主从复制与读写分离

MySQL数据库的主从复制与读写分离 一、主从复制原理1、MySQL支持主从复制类型2、主从复制的原理3、主从复制的架构4、mysql主从复制延迟4、slave从服务器的配置5、验证主从复制的效果6、从服务器的故障问题解决1、遇到Slave_IO_Running:NO的情况2、遇到Slave_SQL_Running&#…

C++ - 哈希的应用

前面的文章中我们讲解了如何进行哈希表的构建以及使用实现的哈希表来模拟实现unordered_map&#xff0c;在本文中我们将继续来讲解一下哈希的应用。 位图 问题引入 首先我们来引入一个问题&#xff1a;给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&am…

Pyside6-第十三篇-布局(最后一章废话-理论篇)

本篇Pyside6的第十三篇&#xff0c;新知识点&#xff0c;布局。 布局的方式有5种。着重挑选几种将 QVBoxLayout&#xff08;垂直布局&#xff09;&#xff1a;按垂直方向排列小部件。 QHBoxLayout&#xff08;水平布局&#xff09;&#xff1a;按水平方向排列小部件。 QGridLay…

关于函数和变量命名

标识符命名基本要求 标识符是指用来识别某个实体的一个符号&#xff0c;在不同的应用环境下有不同的含义。 在计算机编程语言中&#xff0c;标识符是用户编程时使用的名字&#xff0c;用于给变量、常量、函数、语句块等命名&#xff0c;以建立起名称与使用之间的关系。 C语言…

jdk代理和cglib代理(实例推导)

目录 jdk代理和cglib代理&#xff08;实例推导&#xff09;jdk动态代理Cglib动态代理总结 jdk代理和cglib代理&#xff08;实例推导&#xff09; 更深层的探究jdk和cglib动态代理的原理 jdk动态代理 jdk动态代理&#xff08;简单实现&#xff09; 定义一个House的房源类型接口…

05 2024考研408-计算机组成原理第五章-中央处理器学习笔记

文章目录 前言一、CPU的功能与基本结构1.1、CPU的功能1.2、运算器与控制器需要实现功能1.3、运算器的基本结构1.3.1、基本结构构成&#xff08;七个部分&#xff09;1.3.2、各个部件详细介绍①算数逻辑运算单元②通用寄存器组&#xff08;介绍数据通路的基本结构2个&#xff09…

Python教程(1)——python环境的下载与安装

Python教程(1)——python环境的下载与安装 下面是下载并安装Python解释器的具体步骤&#xff0c;非常详细&#xff0c;保姆级别的教程&#xff0c;初学者一步一步的按照操作。 下载python运行环境 访问官方网站 在浏览器中打开Python的官方网站&#xff0c;网址为 https://…