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

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>

  1. strlen:获取字符串的长度

    统计长度时不计算结束符,且中文占2字节

  2. strcat:拼接两个字符串

    细节1:把第二个字符串中全部的内容,拷贝到第一个字符串的未尾,第二个字符串不修改 前提1:第一个字符串是可以被修政的 前提2:第一个字符串中剩余的空间可以容纳拼接的字符串

  3. strcpy:复制字符串

    细节1:把第二个字符串中全部的内容,拷贝到第一个字符串中,把第一个字符串里面原有的内容给覆盖了 前提1:第一个字符串是可以被修改的 前提2:第一个字符串中空间可以容纳第二个字符串的完整内容

  4. strcmp:比较两个字符串

    顺序内容完全 一样返回0,不一样返回非0

  5. strlwr:将字符串变成小写

    只可以修改英文大小写

  6. 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: 在底层&#xff0c;实际存储的时候&#xff0c;c语言还是会帮我们把字符串"abc"转换成字符数组进行保存&#xff0c;并且在末尾还…...

ThreadLocal 详解(三)内存泄露原因,以及强弱引用

1、ThreadLocal内存泄漏 在Threadlocal的内部静态类中Entry将Threadlocal作为一个key&#xff0c;值作为value保存&#xff0c;他继承WeakReference&#xff0c;super(k)&#xff0c;代表了Threadlocal对象是一个弱引用&#xff1b; 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-…...

多叉树的深度优先遍历(以电话号码的字母组合为例)

在我们的座机上&#xff0c;都有这种数字与字母对应的按键。 以此为例&#xff0c;讲解多叉树的深度优先遍历 问题 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同…...

【YashanDB数据库】PHP无法通过ODBC连接到数据库

【问题分类】驱动使用 【关键字】ODBC、驱动使用、PHP 【问题描述】应用使用php-fpmnginx架构&#xff0c;通过php的ODBC拓展连接YashanDB时出现报错&#xff1a; [unixODBC][Driver Manager]Cant open lib /home/yashandb_odbc/libyas_odbc.so: file not found但是在应用所…...

C++ | Leetcode C++题解之第326题3的幂

题目&#xff1a; 题解&#xff1a; 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-性能压测-性能监控-堆内存与垃圾回收

文章目录 一&#xff0c;两种类型的应用1&#xff0c;CPU密集型应用示例&#xff1a;Apache Spark 2&#xff0c;IO密集型应用示例&#xff1a;MySQL 二&#xff0c;监控 我们通过压力测试对接口进行了性能评估&#xff0c;以确定其是否满足性能要求。 如果不符合&#xff0c;就…...

大模型综述

《Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond》论文阅读 模型架构 两种架构&#xff1a; encoder-decoder架构/encoder架构:T5/BERTdecoder架构:GPT4 特点LLMsencoder-decoderorencoder-onlyBERT-style训练:掩码语言模型类型&#xff1a;…...

Python 常用内置函数

目录 1、enumerate函数 1.1、for循环中使用 1.2、enumerate指定索引的起始值 1.3、enumerate在线程中的作用 2、Map 函数 2.1、map()函数可以传多个迭代器对象 3、lambda表达式&#xff08;匿名函数&#xff09; 示例 4、sort函数和sorted函数 4.1、sort()函数 4.2、…...

什么是大数据?

1. 大数据定义 大数据到底是什么&#xff1f; 大数据的定义是数据种类更多、数量更多、速度更快。这也被称为三个“V”。 简单来说&#xff0c;大数据是更大、更复杂的数据集&#xff0c;尤其是来自新数据源的数据集。这些数据集非常庞大&#xff0c;传统数据处理软件根本无…...

Linux 内核源码分析---资源分配及系统总线

资源管理 Linux提供通用的构架&#xff0c;用于在内存中构建数据结构。这些结构描述了系统中可用的资源&#xff0c;使得内核代码能够管理和分配资源。 其中关键的数据结构resource如下&#xff1a; 用于连接parent, child, sibling成员规则如下&#xff1a; 1、每个子结点只…...

C# POST请求 各种实现方法梳理

目录 1.首先是基础的参数 2.使用RestClient 3.使用封装库 4.使用微软原生库进行请求 5.使用HttpClient进行请求 C#代码中&#xff0c;实现Http/Https 中的POST请求&#xff0c;可以有很多种方式&#xff0c;下面就梳理下我常用的几种方式&#xff0c;给大家借鉴 1.首先…...

《MySQL数据库》数据导入、导出、表处理—/—<4>

一、插入数据 1、可使用外部工具navicat导入数据的情况下 因为部分公司不允许使用外部工具去导入数据 对于大批量数据&#xff0c;除了上节课中使用导入向导插入数据&#xff0c;也可在vscode中打开csv文件&#xff0c;然后选中光标&#xff0c;长按shiftctrl&#xff0c;拖动…...

Java I/O (Input/Output)——文件字节流

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;Java SE 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Java I/O 简介 Java I/O&#xff08;输入/输出&#xff09;是 Java 程序中…...

VisionPro二次开发学习笔记4-使用C#创建绘图图形

VisionPro提供了许多可以添加到CogDisplay的基本形状&#xff0c;例如CogCircle&#xff0c;CogRectangle&#xff0c;CogEllipse和CogRectangleAffine。这些形状可以是用户可以用鼠标操作的交互式图形&#xff0c;也可以是用户无法更改的静态形状。 若要在CogDisplay控件上绘…...

【langchain学习】使用JsonOutputParser让大模型生成结构化JSON数据

使用Langchain处理结构化数据&#xff0c;以JsonOutputParser为例。以下是具体步骤和代码示例&#xff1a; 导入所需库&#xff1a; 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总结 前言 通过模型算法&#xff0c;熟练对Matlab和python的应用。 学习视频链接&#xff1a; https://www.bilibili.com/video/BV1EK41187…...

基于SpringBoot的Redis开发实战教程

配置和集成缓存涉及多个步骤&#xff0c;从选择适当的缓存技术到实现缓存的存取操作。以下是具体的步骤和示例&#xff0c;假设我们使用Redis作为缓存工具&#xff0c;并基于Spring Boot进行开发。 1. 选择和配置缓存技术 a. 选择缓存工具 Redis 是一个流行的内存数据结构存…...

mysql 分区操作

1。新建分区 mysql 没有全局唯一索引&#xff0c;因此所有涉及唯一索引的都需要加上分区键&#xff0c;因此要做好权衡&#xff0c;键分区不一定能提高效率哦&#xff0c;建分区的主要目的是为了分区查询和删除数据 --将CREATE_TIME 加入主键 ALTER TABLE your_table DROP PR…...

Adafruit GFX图形库:嵌入式显示驱动的分层架构与实践

1. Adafruit GFX 图形库深度解析&#xff1a;嵌入式显示驱动的基石架构 Adafruit GFX 库是 Adafruit 全系列显示设备驱动的统一图形抽象层&#xff0c;其核心定位并非直接操控硬件&#xff0c;而是为上层应用提供一套与具体显示控制器解耦的、标准化的二维图形原语接口。该库采…...

LwEVT:嵌入式轻量级事件管理器设计与实践

1. LwEVT&#xff1a;嵌入式系统轻量级事件管理器深度解析 在资源受限的嵌入式系统中&#xff0c;事件驱动架构&#xff08;Event-Driven Architecture, EDA&#xff09;是构建高响应性、低耦合、可维护固件的核心范式。然而&#xff0c;传统RTOS内置的事件组&#xff08;如Fre…...

智能生态缸系统设计与实现:嵌入式Linux与Qt应用

1. 项目背景与需求分析在当代都市生活中&#xff0c;越来越多的人开始关注室内绿植养护。传统的生态缸管理方式存在诸多痛点&#xff1a;需要频繁人工干预、难以精准控制环境参数、缺乏实时监测手段等。这些问题直接影响了植物的生长状态和观赏价值。我们设计的智能生态缸系统正…...

Canvas生成艺术|意外诞生的混沌风暴(附完整源码+GitHub部署)

Canvas生成艺术&#xff5c;意外诞生的混沌风暴&#xff08;附完整源码GitHub部署&#xff09; 文章目录Canvas生成艺术&#xff5c;意外诞生的混沌风暴&#xff08;附完整源码\GitHub部署&#xff09;一、作品效果预览二、创作历程&#xff08;主打一个“瞎改出奇迹”&#xf…...

Tensorflow-Cookbook最佳实践:如何避免常见陷阱与性能优化技巧

Tensorflow-Cookbook最佳实践&#xff1a;如何避免常见陷阱与性能优化技巧 【免费下载链接】Tensorflow-Cookbook Simple Tensorflow Cookbook for easy-to-use 项目地址: https://gitcode.com/gh_mirrors/te/Tensorflow-Cookbook TensorFlow作为深度学习领域最流行的框…...

python math

# 关于Python的深拷贝&#xff0c;你可能需要知道这些 在Python里处理数据时&#xff0c;经常会遇到需要复制对象的情况。这时候很多人会直接使用赋值操作&#xff0c;但很快就会发现事情没那么简单。比如你有一个列表&#xff0c;里面嵌套了另一个列表&#xff0c;当你修改嵌套…...

私域流量运营自动化 1.5 小时上手

OpenClaw 电商实战 第 2 篇 字数&#xff1a;约 10000 字 阅读时间&#xff1a;约 25 分钟 难度&#xff1a;⭐ 入门&#xff08;无需编程&#xff09; 更新时间&#xff1a;2026-04-01 写在前面 这个教程能帮你解决什么&#xff1f; 如果你是&#xff1a; ✅ 电商运营人员✅…...

在VMware Workstation上实战部署华为eSight网络管理平台

1. 环境准备&#xff1a;从零搭建虚拟化实验平台 第一次接触华为eSight时&#xff0c;我完全被它的企业级功能震撼了——但随之而来的问题是&#xff1a;如何在个人电脑上搭建测试环境&#xff1f;经过多次实践&#xff0c;我发现VMware Workstation是最理想的实验平台。这里分…...

避坑指南:手把手教你用Java生成定制化词云图(解决中文乱码、背景图加载问题)

Java词云实战&#xff1a;从中文乱码到高级定制的全流程解决方案 第一次尝试用Java生成词云时&#xff0c;我盯着屏幕上那堆乱码和错位的文字&#xff0c;差点以为自己的编码知识全都白学了。直到深夜两点调试成功的那一刻&#xff0c;才明白那些看似简单的配置背后藏着多少细…...

别再死磕PI参数了!用MATLAB/Simulink手把手教你搭建永磁同步电机的内模控制器(附仿真模型)

永磁同步电机内模控制实战&#xff1a;从数学模型到Simulink仿真 在电机控制领域&#xff0c;PI控制器就像是一把瑞士军刀——简单实用但需要反复调试。当我在实际项目中遇到永磁同步电机(PMSM)参数变化大、耦合严重的问题时&#xff0c;传统PI控制的表现总是不尽如人意。直到尝…...