字符串和字符数组(1)

news2025/2/4 22:04:57

1.字符串和\0

C语言中有字符类型,但没有字符串类型,C语言中字符串就是由双引号引起来的一串字符,比如:"asdf";

一个字符串中我们能直观的看到一些字符,比如:字符串常量"asdfgh"中,我们看到了asdfgh这六个字符,实际上在末尾还隐藏着一个'\0'的转义字符,'\0'是作为字符串的结束标志存在的。

正因为\0是作为结束标志存在的,所以printf打印和计算字符串长度strlen遇到\0时,就会自动停止。

其实字符串和字符数组是非常类似的,字符串在内存中储存也是连续的,和数组是一样的。

2.字符数组的创建和初始化

字符数组就是一个存放字符的叔祖,例如:

1.//创建字符数组并初始化

2.char arr[4]={'s','f','f','r'};

这里的arr就是一个字符数组,可以存放4个字符,我们可以根据需求修改数组的大小。

我们可以使用下标访问字符数组,如下:

#include <stdio.h>
int main()
{
	char arr[] = { 's','a','s'};
	int sd = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	for (i = 0; i < sd; i++)
	{
		printf("%c", arr[i]);
	}
	return 0;
}

3.字符串常量初始化字符数组

字符数组的初始化,也可以直接使用常量字符串 ,如下代码;

1.//指定数组大小

2.char data[4]={'s','e','y','t'};

3.//通过初始化内容来确定元素个数

4.char data2[]={'e','g','f',''s};

所以当我们使用常量字符串初始化数组的时候,其实我们给数组中存放了能看到的字符和一个\0字符。这里我们也可以做一个对比:

#include <stdio.h>
int main()
{
char arr[]={'s','g','d'};
char arr1[]="sgd";
return 0;
}

在vs2022中调试后,我们在监视窗口中观察是这样的:

确实在使用常量字符串初始化的时候,数组中多了一个'\0',这个'\0'就是字符串中隐藏的 。

4.'\0'作为字符串的结束表示

在这里我们演示一下\0的作用,请看如下代码:

#include <stdio.h>
int main()
{
char arr[]={'d','t','h','u'};
char arr1[]="dthu";
printf("%c",arr);
printf("%c",arr1);

return 0;
}

输出结果:

 我们可以看到arr与arr1相比,多出了很多的随机值,这就是因为arr没有\0隐藏在结尾,所以打印就没有停止。

如果我们在arr后面加上\0会怎样呢?

#include <stdio.h>
int main()
{
	char arr[] = { 'd','t','h','u' ,'\0'};
	char arr1[] = "dthu";
	printf("%s\n", arr);
	printf("%s\n", arr1);

	return 0;
}

运行结果:

 

看到这里相信就算我不说,大家应该都懂了\0的作用和重要性了吧?

5.字符数组的输入与输出

我们可以使用scanf与printf完成字符串的输入与输出,请看下面的代码:

 

#include <stdio.h>
int main()
{
	char arr[10] = { 0 };

	scanf("%s", arr);
	printf("%s", arr);

	return 0;
}

 输入输出的结果:

注:在使用scanf输入的时候要保证字符数组够大,能够容纳输入进去的的字符,要不然就会出问题,这也是scanf被诟病不安全的地方。

 

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

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

相关文章

三、Java AI 编程助手

AI 对于我们来说是一个高效的编程助手&#xff0c;给我们提供了有效的建议和解决方案&#xff0c;高效利用&#xff0c;无疑是如虎添翼。接下来为大家推荐一个 AI 编程助手。 Fitten Code 1、简介 Fitten Code 免费且支持 80 多种语言&#xff1a;Python、C、Javascript、Type…

2024.9.29 问卷数据分析

最近拿到了一份受众回访的问卷数据&#xff0c;排到的任务是对它进行数据探索。 其实对于问卷数据的处理我只在参加正大杯那次做过&#xff08;正大杯拿了校三&#xff09;&#xff0c;可见这个处理水平还有待提高&#xff08;当然是各种原因促成的结果&#xff09;&#xff0…

python配置环境变量

方法一&#xff1a;首先卸载重新安装&#xff0c;在安装时勾选增加环境变量 方法二&#xff1a;我的电脑-属性-高级系统配置 手动添加环境变量&#xff0c;路径为python的安装路径 检查&#xff1a;查看环境变量是否安装成功 安装第三方lib winr&#xff0c;输入cmd pip ins…

[SAP ABAP] 数据元素添加参数ID(Parameter ID)

学生表(ZDBT_STU_437) 示例&#xff1a;为学生表ZDBT_STU_437中的数据元素ZDE_STUID_437创建Parameter ID 1.使用事务码SM30维护TPARA表 新建参数ID并输入简短描述 点击保存按钮&#xff0c;选择指定的包即可生成参数ID 2.参数ID和数据元素绑定 使用SE11对学生表(ZDBT_STU_…

小程序 uniapp+Android+hbuilderx体育场地预约管理系统的设计与实现

目录 项目介绍支持以下技术栈&#xff1a;具体实现截图HBuilderXuniappmysql数据库与主流编程语言java类核心代码部分展示登录的业务流程的顺序是&#xff1a;数据库设计性能分析操作可行性技术可行性系统安全性数据完整性软件测试详细视频演示源码获取方式 项目介绍 用户 注册…

【ubuntu】ubuntu20.04安装chrome浏览器

1.下载 https://download.csdn.net/download/qq_35975447/89842972 https://www.google.cn/chrome/ 2.安装 sudo dpkg -i google-chrome-stable_current_amd64.deb 3.使用

vscode配置R语言debugger环境:“vscDebugger“的安装

要在 R 中安装 vscDebugger 包&#xff0c;可以按照以下步骤进行&#xff1a; 方法一&#xff1a;使用命令面板自动安装 打开命令面板&#xff1a; 在 Visual Studio Code 中按 CtrlShiftP 打开命令面板。 运行安装命令&#xff1a; 在命令面板中输入并选择 r.debugger.updat…

DES算法的详细描述和C语言实现

访问www.tomcoding.com网站&#xff0c;学习Oracle内部数据结构&#xff0c;详细文档说明&#xff0c;下载Oracle的exp/imp&#xff0c;DUL&#xff0c;logminer&#xff0c;ASM工具的源代码&#xff0c;学习高技术含量的内容。 前言 很久以前用汇编语言实现过DES算法&#x…

UE4 材质学习笔记02(数据类型/扭曲着色器)

一.什么是数据类型 首先为啥理解数据类型是很重要的。一些节点的接口插槽只接受特定类型的数据&#xff0c;如果连接了不匹配的数据就会出现错误&#xff0c;有些接口可以接受任何数据类型&#xff0c;但是实际上只会使用到其中的一些。并且有时可以将多个数据流合并成一个来编…

《python语言程序设计》2018版第8章19题几何Rectangle2D类(上)--原来我可以直接调用

2024.9.29 玩了好几天游戏。 感觉有点灵感了。还想继续玩游戏。 2024.10.4 今天练习阿斯汤加练完从早上10点睡到下午2点.跑到单位玩游戏玩到晚上10点多. 现在回家突然有了灵感 顺便说一句,因为后弯不好,明天加练一次. 然后去丈母娘家. 加油吧 第一章、追求可以外调的函数draw_r…

Spring Boot集成encache快速入门Demo

1.什么是encache EhCache 是一个纯 Java 的进程内缓存框架&#xff0c;具有快速、精干等特点&#xff0c;是 Hibernate 中默认的 CacheProvider。 Ehcache 特性 优点 快速、简单支持多种缓存策略&#xff1a;LRU、LFU、FIFO 淘汰算法缓存数据有两级&#xff1a;内存和磁盘&a…

【Git】vscode链接github拉去镜像

1.拉取别人的项目到自己的仓库 2.回到自己的仓库拉取文件到vscode里面下载 使用vscode进入虚拟机 推送到自己的仓库上面 在 github 页面将修改的内容 PR 到 Tutorial 创建一个个人仓库 代码如下 cd demo git clone https://github.com/3154067760/Tutorial.git cd Tutorial/…

贴吧软件怎么切换ip

在网络使用中&#xff0c;有时我们需要切换IP地址来满足特定的需求&#xff0c;比如需要切换贴吧软件IP以进行不同的操作。本文将介绍几种贴吧切换IP地址的方法&#xff0c;帮助用户更好地管理自己的网络身份和访问权限。 1、更换网络环境‌ 通过连接到不同的Wi-Fi网络或使用移…

HBuilderX连接MuMu模拟器最简单的方法

1、在MuMu官网下载MuMu模拟器官网_安卓12模拟器_网易手游模拟器 跟随步骤安装 2、安装后打开MuMu多开器&#xff0c;查看ADB端口号 或者启动MuMu模拟器在问题诊断中查看 3、在HBuilder中配置模拟器端口号和adb路径 4.配置环境变量 5、adbl连接端口 打开cmd运行以下命令 adb …

系统架构设计师-下午案例题(2022年下半年)

1.试题-(共25分):阅读以下关于软件架构设计与评估的叙述在答题纸上回答问题1和问题2。 【说明】某电子商务公司拟升级其会员与促销管理系统&#xff0c;向用户提供个性化服务&#xff0c;提高用户的粘性。在项目立项之初&#xff0c;公司领导层一致认为本次升级的主要目标是提…

随笔(四)——代码优化

文章目录 前言1.原本代码2.新增逻辑3.优化逻辑 前言 原逻辑&#xff1a;后端data数据中返回数组&#xff0c;数组中有两个对象&#xff0c;一个是属性指标&#xff0c;一个是应用指标&#xff0c;根据这两个指标展示不同的多选框 1.原本代码 getIndicatorRange(indexReportLi…

逗比大神(ToyoDAdoubi)的ShadowsocksR/SSR一键搭建脚本

逗比大神(ToyoDAdoubi)的ShadowsocksR/SSR一键搭建脚本&#xff08;推荐&#xff09; 我推荐新手小白用户使用逗比大神(ToyoDAdoubi)的SSR一键搭建脚本&#xff0c;因为全中文界面&#xff0c;操作更加简单方便。 此一键安装脚本支持 CentOS 6、Debian 7、Ubuntu 12 及以上系…

10.4学习

1.Transactional 注意事项&#xff1a; ①事务函数中不要处理耗时任务&#xff0c;会导致长期占有数据库连接。 ②事务函数中不要处理无关业务&#xff0c;防止产生异常导致事务回滚。 ●事务传播属性 ①REQUIRED&#xff08;默认属性&#xff09; 如果存在一个事务&#…

ROS基础入门——实操教程

ROS基础入门——实操教程 前言 本教程实操为主&#xff0c;少说书。可供参考的文档中详细的记录了ROS的实操和理论&#xff0c;只是过于详细繁杂了&#xff0c;看得脑壳疼&#xff0c;于是做了这个笔记。 Ruby Rose&#xff0c;放在这里相当合理 本文初编辑于2024年10月4日 C…

云原生(四十五) | ECS服务器项目部署实战

文章目录 ECS服务器项目部署实战 一、ECS服务器项目部署说明 二、下载WordPress 三、部署WordPress需要哪些应用 ECS服务器项目部署实战 一、ECS服务器项目部署说明 案例&#xff1a;为了让大家更好的理解ECS服务器的使用场景&#xff0c;我们通过一个比较经典的WordPres…