当前位置: 首页 > 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、项目实战 …...

网络编程(Modbus进阶)

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

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...