C语言----字符串
字符串
第一种定义
利用字符数组 +双引号的方式定义字符串
char str1[4]="abc";
printf("%s\n",str1);
细节1:
在底层,实际存储的时候,c语言还是会帮我们把字符串"abc"转换成字符数组进行保存,并且在末尾还要再加上'\0‘
{'a','b','c','\0'};
细节2:
数组的长度,要么不写,如果要写的话,记得要把结束标记的空间给预留出来
细节3:
字符数组 +双引号的方式定义字符串,内容是可以发生改变的
第二种定义
利用指针 +双引号的方式定义字符串
char* str2 = "abc";
printf("%s\n",str2);
细节1:
在底层,实际存储的时候,c语言还是会帮我们把字符串"abcd"转换成字符数组进行保存,并且在末尾还要再加上'\0'
{'a','b','c','d','\0‘};
细节2:
利用指针 +双引号的方式定义字符串,会把底层的字符数组放在只读常量区
只读常量区特点:
内容不可以修改的
里面定义的字符串是可以复用的
复用就是在定义时会查找在只读常量区内有没有这个字符串,若有则复用
键盘录入字符串并遍历
#include<stdio.h>
int main()
{//因为要键盘录入键盘录入,所以不可以用指针定义字符串char str[100];//定义一个指针p来接收str的地址char* p = str;printf("请输入一段字符串(长度小于100):");scanf("%s",str);printf("录入的字符串为:%s\n",str); //循环判断str内的每一个字符while(1){//定义变量c来接收p中的元素//数组的地址其实就是数组中第一个元素的地址char c = *p;//当c等于结束符时说明字符串已经遍历完成if(c == '\0'){//跳出循环break;}//打印当前元素printf("%c\n",c);//指针 p 向后移动一个位置,指向下一个字符p++;}return 0;
}
遍历姓名
#include<stdio.h>
int main()
{//方法一:定义一个二维数组来存放5人的名字/*char strArr[5][10] = {"张三","李四","王五","马六","徐七"};int i;for(i=0;i<5;i++){printf("%s\n",strArr[i]); }*///方法二:定义一个指针数组来存放5人的名字char* p[5] = {"张三","李四","王五","马六","徐七"};int i;for(i=0;i<5;i++){printf("%s\n",p[i]); }return 0;
}
string常用函数
使用函数需要导入头文件
#include<string.h>
-
strlen:获取字符串的长度
统计长度时不计算结束符,且中文占2字节
-
strcat:拼接两个字符串
细节1:把第二个字符串中全部的内容,拷贝到第一个字符串的未尾,第二个字符串不修改 前提1:第一个字符串是可以被修政的 前提2:第一个字符串中剩余的空间可以容纳拼接的字符串
-
strcpy:复制字符串
细节1:把第二个字符串中全部的内容,拷贝到第一个字符串中,把第一个字符串里面原有的内容给覆盖了 前提1:第一个字符串是可以被修改的 前提2:第一个字符串中空间可以容纳第二个字符串的完整内容
-
strcmp:比较两个字符串
顺序内容完全 一样返回0,不一样返回非0
-
strlwr:将字符串变成小写
只可以修改英文大小写
-
strupr:将字符串变成大写
只可以修改英文大小写
示例代码
#include<stdio.h>
#include<string.h>
int main()
{char* str1 = "abc";char str2[100] = "Ab你";char str3[] = {'e','f','g','h','\0'};
strlen计算字符串长度//int len1 = strlen(str1);//int len2 = strlen(str2);//int len3 = strlen(str3);//printf("%d %d %d\n",len1,len2,len3);
strcat拼接字符串//strcat(str2,str3);//printf("%s\n",str2);//printf("%s\n",str3);
strcpy复制字符串//strcpy(str2,str3);//printf("%s\n",str2);//printf("%s\n",str3);
strcmp比较字符串//int test = strcmp(str2,str3);//printf("%d\n",test);
strlwr小写字符串//strlwr(str2);//printf("%s\n",str2);
//strupr大写字符串strupr(str2);printf("%s\n",str2);return 0;
}
相关文章:
C语言----字符串
字符串 第一种定义 利用字符数组 双引号的方式定义字符串 char str1[4]"abc"; printf("%s\n",str1); 细节1: 在底层,实际存储的时候,c语言还是会帮我们把字符串"abc"转换成字符数组进行保存,并且在末尾还…...
ThreadLocal 详解(三)内存泄露原因,以及强弱引用
1、ThreadLocal内存泄漏 在Threadlocal的内部静态类中Entry将Threadlocal作为一个key,值作为value保存,他继承WeakReference,super(k),代表了Threadlocal对象是一个弱引用; static class Entry extends WeakReference…...
【Android面试八股文】说一说Android开发模式之MVC、MVP、MVVM的区别?
文章目录 一、 MVC(Model-View-Controller)二、 MVP(Model-View-Presenter)三、MVVM(Model-View-ViewModel)四、示例代码4.1. MVC 示例4.2. MVP 示例4.3. MVVM 示例五、总结在Android开发中, MVC(Model-View-Controller)MVP(Model-View-Presenter)MVVM(Model-View-…...
多叉树的深度优先遍历(以电话号码的字母组合为例)
在我们的座机上,都有这种数字与字母对应的按键。 以此为例,讲解多叉树的深度优先遍历 问题 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同…...
【YashanDB数据库】PHP无法通过ODBC连接到数据库
【问题分类】驱动使用 【关键字】ODBC、驱动使用、PHP 【问题描述】应用使用php-fpmnginx架构,通过php的ODBC拓展连接YashanDB时出现报错: [unixODBC][Driver Manager]Cant open lib /home/yashandb_odbc/libyas_odbc.so: file not found但是在应用所…...
C++ | Leetcode C++题解之第326题3的幂
题目: 题解: class Solution { public:bool isPowerOfThree(int n) {return n > 0 && 1162261467 % n 0;} };...
Ubuntu20.4上搭建FFMPEG开发环境
编译ffmpeg命令如下: 1.安装yasm(ffmpeg里面有汇编语言的部分,所以需要安装一下yasm) wget 5http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar xvzf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure make && make install 2.安装nasm(2.13以上…...
谷粒商城实战笔记-144-性能压测-性能监控-堆内存与垃圾回收
文章目录 一,两种类型的应用1,CPU密集型应用示例:Apache Spark 2,IO密集型应用示例:MySQL 二,监控 我们通过压力测试对接口进行了性能评估,以确定其是否满足性能要求。 如果不符合,就…...
大模型综述
《Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond》论文阅读 模型架构 两种架构: encoder-decoder架构/encoder架构:T5/BERTdecoder架构:GPT4 特点LLMsencoder-decoderorencoder-onlyBERT-style训练:掩码语言模型类型:…...
Python 常用内置函数
目录 1、enumerate函数 1.1、for循环中使用 1.2、enumerate指定索引的起始值 1.3、enumerate在线程中的作用 2、Map 函数 2.1、map()函数可以传多个迭代器对象 3、lambda表达式(匿名函数) 示例 4、sort函数和sorted函数 4.1、sort()函数 4.2、…...
什么是大数据?
1. 大数据定义 大数据到底是什么? 大数据的定义是数据种类更多、数量更多、速度更快。这也被称为三个“V”。 简单来说,大数据是更大、更复杂的数据集,尤其是来自新数据源的数据集。这些数据集非常庞大,传统数据处理软件根本无…...
Linux 内核源码分析---资源分配及系统总线
资源管理 Linux提供通用的构架,用于在内存中构建数据结构。这些结构描述了系统中可用的资源,使得内核代码能够管理和分配资源。 其中关键的数据结构resource如下: 用于连接parent, child, sibling成员规则如下: 1、每个子结点只…...
C# POST请求 各种实现方法梳理
目录 1.首先是基础的参数 2.使用RestClient 3.使用封装库 4.使用微软原生库进行请求 5.使用HttpClient进行请求 C#代码中,实现Http/Https 中的POST请求,可以有很多种方式,下面就梳理下我常用的几种方式,给大家借鉴 1.首先…...
《MySQL数据库》数据导入、导出、表处理—/—<4>
一、插入数据 1、可使用外部工具navicat导入数据的情况下 因为部分公司不允许使用外部工具去导入数据 对于大批量数据,除了上节课中使用导入向导插入数据,也可在vscode中打开csv文件,然后选中光标,长按shiftctrl,拖动…...
Java I/O (Input/Output)——文件字节流
博客主页:誓则盟约系列专栏:Java SE 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Java I/O 简介 Java I/O(输入/输出)是 Java 程序中…...
VisionPro二次开发学习笔记4-使用C#创建绘图图形
VisionPro提供了许多可以添加到CogDisplay的基本形状,例如CogCircle,CogRectangle,CogEllipse和CogRectangleAffine。这些形状可以是用户可以用鼠标操作的交互式图形,也可以是用户无法更改的静态形状。 若要在CogDisplay控件上绘…...
【langchain学习】使用JsonOutputParser让大模型生成结构化JSON数据
使用Langchain处理结构化数据,以JsonOutputParser为例。以下是具体步骤和代码示例: 导入所需库: from config import llm from langchain_core.output_parsers import JsonOutputParser from langchain_core.prompts import PromptTemplate f…...
【学习笔记】Matlab和python双语言的学习(最大最小化规划)
文章目录 前言一、最大最小化规划二、选址问题三、代码实现----Matlab1.Matlab 的 fminimax 函数2.Matlab 代码 四、代码实现----python总结 前言 通过模型算法,熟练对Matlab和python的应用。 学习视频链接: https://www.bilibili.com/video/BV1EK41187…...
基于SpringBoot的Redis开发实战教程
配置和集成缓存涉及多个步骤,从选择适当的缓存技术到实现缓存的存取操作。以下是具体的步骤和示例,假设我们使用Redis作为缓存工具,并基于Spring Boot进行开发。 1. 选择和配置缓存技术 a. 选择缓存工具 Redis 是一个流行的内存数据结构存…...
mysql 分区操作
1。新建分区 mysql 没有全局唯一索引,因此所有涉及唯一索引的都需要加上分区键,因此要做好权衡,键分区不一定能提高效率哦,建分区的主要目的是为了分区查询和删除数据 --将CREATE_TIME 加入主键 ALTER TABLE your_table DROP PR…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
