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

12、字符串

1、字符串概念

        字符串用来存储一组字符,因此需要字符数组来存。

        C语言中字符串的表示

                C语言里面字符串只能用字符数组来存

                字符串要求这个数组的末尾必须至少有一个\0

                char ch1[] = {'a','b','c'};           // 不是字符串

                char ch2[5] = {'h','e','l','l','o'};  // 不是字符串

                char ch2[6] = {'h','e','l','l','o'};  // {'h','e','l','l','o','\0'}  字符串

                char ch2[10] = {'h','e','l','l','o'}; // {'h','e','l','l','o','\0','\0','\0','\0','\0'}  字符串

                简化成""的形式

                char ch2[] = "hello"; // {'h','e','l','l','o','\0'}

        例:

                char ch2[10] = {'h','e','l','l','o'};

                sizeof(ch2)=___10____   (sizeof求空间所占字节数)

                char ch3[] = "hello";

                sizeof(ch3)=____6_____ (sizeof求空间所占字节数)

2、字符串专门格式控制符%s        

        输入 -- 一串字符  --- %s需要字符串的某个字符地址,从给定的地址开始接收一个字符放到char型空间去,直到遇到空格 或者 回车 结束

        输出 -- 一串字符  --- %s需要字符串的某个字符地址,从给定的地址开始读一个char字符输出,读一个输出,读到\0

char str[20];printf("请输入一个字符串:");scanf("%s",str);     //  scanf("%s",&str[0]);printf("输入的字符串是:%s\n",str);

3、多个字符串存储

        存储一个同学的姓名

                一个字符串  --- 一维数组既可以了  char name[20];

        存储一个班级同学的姓名,加入班级有5为同学

                5个字符串 --- 二维数组            char names[5][20];

        例:

                

char names[5][20] = {"lili","tom","xiaoming","xiaoli","xiaomei"};int i;
for(i=0;i<5;i++)
{printf("%s\n",names[i]);
}

4、字符串处理函数

        因为字符串需要使用数组存储,所以字符串名称是一个数组名,不能直接进行比较或者 复制操作,因此C语言为了方便我们操作,在string.h头文件里面提供了很多常用的字符串处理函数,帮助我们快速实现字符串的相关操作,具体可以参考:C/C++函数大全。

        

        库函数学习重点关注:

                函数功能是什么

                功能怎么用

                思考:函数如何完成这个功能

        4.1、strlen 


            功能:求字符串长度,不包含'\0'
            语法:
                        #include <string.h>
                        size_t strlen( char *str );  
             使用:                        

#include<stdio.h>
#include<string.h>int main(void)
{char str[20];printf("请输入字符串:");scanf("%s",str);int len;len = strlen(str);printf("%d\n",len);int len1;len1 = strlen(&str[2]);printf("%d\n",len1);return 0;
}

                sizeof : 任意空间所占字节数

                strlen :字符串 -- 从给定的地址计数知道遇到\0 --- 统计这个过程中字符的个数

           实现思路:

                从给定的地址开始查找,找到一个非\0字符就技术,直到遇到\0字符结束计数,并把技术结果返回。

        4.2、strcat 


            功能:字符串拼接
            语法:
                        #include <string.h>
                        char *strcat( char *str1, const char *str2 ); 
            使用:                    

char s1[30] = "hello";
char s2[10] = "world";// 想把s2拼接到s1的后面            
strcat(s1,s2); printf("%s",s1);

            实现思路:
                        先找到第一个字符串末尾 \0
                        依次将第二个字符串的字符拷贝到第一个字符串的位置
                        拷贝结束补\0

        4.3、strcpy 


            功能:拷贝字符串
            语法:
                        #include <string.h>
                        char *strcpy( char *str1, const char *str2 ); 
            使用:                        

#include<stdio.h>
#include<string.h>int main(void)
{char s1[10] = "hello";		char s2[10] = "hihihhi";strcpy(s2,s1);printf("%s",s2);printf("%c",s2[6]);return 0;
}

            实现思路:                        
                       依次将第二个字符串的字符拷贝到第一个字符串str1指向的位置
                        拷贝结束补\0

        4.4、strcmp


            功能:比较字符串大小
            语法:
                        #include <string.h>
                        int strcmp( const char *str1, const char *str2 ); 
            使用:
                        

#include<stdio.h>
#include<string.h>int main(void)
{char pwd[20];printf("请输入密码:");scanf("%s",pwd);int res;res = strcmp(pwd,"123456");if(res == 0){printf("登录成功");}else{printf("登录失败");}return 0;
}

            实现思路:
                        长度一样,对应下标上的字符也要一样,两个字符串相等,返回0,否则就是不相等。

                        找到两个字符串的对应位置,0下标和0下标比较,1下标和1下标比较,知道遇到不一样的返回非,如果对比了所有都一样,一起遇到\0就代表字符出啊你一样,返回0。

相关文章:

12、字符串

1、字符串概念 字符串用来存储一组字符&#xff0c;因此需要字符数组来存。 C语言中字符串的表示 C语言里面字符串只能用字符数组来存 字符串要求这个数组的末尾必须至少有一个\0 char ch1[] {a,b,c}; // 不是字符串 char ch2[5] {h,e,l,l,o}; // 不是字符串 char…...

DPDK用户态协议栈-Tcp Posix API 1

和udp一样&#xff0c;我们需要实现和系统调用一样的接口来实现我们的tcp server。先来看看我们之前写的unix_tcp使用了哪些接口&#xff0c;这边我加上两个系统调用&#xff0c;分别是接收数据和发送数据。 #include <stdio.h> #include <arpa/inet.h> #include …...

【人工智能-科普】图神经网络(GNN):与传统神经网络的区别与优势

文章目录 图神经网络(GNN):与传统神经网络的区别与优势什么是图神经网络?图的基本概念GNN的工作原理GNN与传统神经网络的不同1. 数据结构的不同2. 信息传递方式的不同3. 模型的可扩展性4. 局部与全局信息的结合GNN的应用领域总结图神经网络(GNN):与传统神经网络的区别与…...

LabVIEW实现UDP通信

目录 1、UDP通信原理 2、硬件环境部署 3、云端环境部署 4、UDP通信函数 5、程序架构 6、前面板设计 7、程序框图设计 8、测试验证 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利…...

[pdf,epub]228页《分析模式》漫谈合集01-45提供下载

《分析模式》漫谈合集01-45的pdf、epub文件提供下载。已上传至本号的CSDN资源。 如果CSDN资源下载有问题&#xff0c;可到umlchina.com/url/ap.html。 已排版成适合手机阅读&#xff0c;pdf的排版更好一些。 ★UMLChina为什么叒要翻译《分析模式》&#xff1f; ★[缝合故事]…...

Kafka的消费消息是如何传递的?

大家好&#xff0c;我是锋哥。今天分享关于【Kafka的消费消息是如何传递的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Kafka的消费消息是如何传递的&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中&#xff0c;消息的消费是通过消费…...

二分查找(Java实现)(1)

二分查找&#xff08;Java实现&#xff09;&#xff08;1&#xff09; leetcode 34.排序数组中查找元素第一个和最后一个位置 题目描述: 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如…...

力扣103.二叉树的锯齿形层序遍历

题目描述 题目链接103. 二叉树的锯齿形层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09;。 示例 1&#xff…...

Search with Orama

1.前言 在不久之前&#xff0c;我把 DevNow 的搜索组件通过 Lunr 进行了重构&#xff0c;从前端角度实现了对文章内容的搜索&#xff0c;但是在使用体验上&#xff0c;感觉不是特别好&#xff0c;大概有如下几个原因&#xff1a; 社区的文章数量比较少&#xff0c;项目的 Com…...

一万台服务器用saltstack还是ansible?

一万台服务器用saltstack还是ansible? 选择使用 SaltStack 还是 Ansible 来管理一万台服务器&#xff0c;取决于几个关键因素&#xff0c;如性能、扩展性、易用性、配置管理需求和团队的熟悉度。以下是两者的对比分析&#xff0c;帮助你做出决策&#xff1a; SaltStack&…...

计算机类大厂实习春招秋招开发算法面试问答练习题

计算机类大厂实习春招秋招开发算法面试问答练习题 下面有十个非常重要且常问,面试者却注意不到的问题,我们一个个来看,一个个来学。 线程创建到删除过程中,底层是怎么实现的 1.线程创建 线程创建是线程生命周期的起点。在操作系统中,线程可以通过多种方式创建,但无论哪…...

【热门主题】000068 筑牢网络安全防线:守护数字世界的坚实堡垒

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【热…...

RPC与HTTP调用模式的架构差异

RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;和 HTTP 调用是两种常见的通信模式&#xff0c;它们在架构上有以下一些主要差异&#xff1a; 协议层面 RPC&#xff1a;通常使用自定义的二进制协议&#xff0c;对数据进行高效的序列化和反序列化&am…...

计算机网络之传输层协议UDP

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络之传输层协议UDP 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目…...

Uniapp 微信小程序内打开web网页

技术栈&#xff1a;Uniapp Vue3 简介 实际业务中有时候会需要在本微信小程序内打开web页面&#xff0c;这时候可以封装一个路由页面专门用于此场景。 在路由跳转的时候携带路由参数&#xff0c;拼接上web url&#xff0c;接收页面进行参数接收即可。 实现 webview页面 新…...

阅读方法论

选择固有缺陷,选项是对比出来的...

373. 查找和最小的 K 对数字

参考的这个博客&#xff1a; https://zhuanlan.zhihu.com/p/457239781 然后看这个代码我想到了另外一种方法&#xff0c;就是一步一步往里加元组 ( i , j ) (i,j) (i,j)&#xff0c;看代码就知道了&#xff0c;不过需要做一步去重&#xff0c;去重不能用 i n t [ ] int[] int…...

常用函数的使用错题汇总

目录 new/delete malloc/free1. 语言和类型2. 内存分配3. 内存释放4. 安全性和类型安全5. 其他特性总结 线程停止文件流 new/delete malloc/free malloc/free 和 new/delete 是 C/C 中用于动态内存管理的两种方式&#xff0c;它们有一些重要的区别。以下是这两种方式的比较&…...

uniapp手机端一些坑记录

关于 z-paging-x 组件&#xff0c;在ios上有时候通过弹窗去粗发它reload时会触发闪退&#xff0c;可能是弹框插入进去导致的DOM 元素已经被移除或者不可用&#xff0c;解决办法是加上他自带属性 :showRefresherWhenReload"true" 加上showRefresherWhe…...

2024学习之前端微信小程序开发教程,从入门到精通-含基础+实战+源码code

目录 一、简单介绍 二、课程需知 三、内容编排 1、小程序基础  起步式 目录结构 小程序框架 场景值  逻辑层 视图层 组件 视图容器 基础内容 表单组件 导航 媒体组件 Api 路由 界面 交互 网络 数据缓存 自定义组件 2、项目实战 …...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...