C 编程中使用字符串
理解字符串:
C 中的字符串是使用字符数组来操作的。数组中的每个字符对应字符串的一个元素,字符串的结尾由空字符('\0')标记。这个空字符至关重要,因为它表示字符串的结尾,并允许函数确定字符串在内存中的结尾位置。
例如,字符串“hello”表示为:
char str[] = {'h', 'e', 'l', 'l', 'o', '\0'}; 该数组 str 保存字符串“hello”的字符,并以空字符“\0”结尾,指示字符串的终止。
另一种常见的表示形式是使用字符串文字:
char str[] = "hello"; 在这种情况下,编译器会自动在字符串末尾附加空字符“\0”。
字符数组与字符串文字:
字符数组:
您可以通过定义数组的大小并初始化各个字符来创建它们。
例如:
char name[5] = {'J', 'o', 'h', 'n', '\0'}; 这将创建一个名为 的字符数组name,最多可容纳 6 个字符(包括空终止符“\0”)并显式分配每个字符。
字符串文字:
通过将字符括在双引号内来表示:这是一种更短且更方便的表示字符串的方式。
编译器自动附加空字符('\0'):例如:
char greeting[] = "Hello"; 在这里,编译器根据字符串文字“Hello”的长度确定数组的大小,并自动添加 null 终止符'\0'。
空终止符“\0”:
空字符('\0')是 C 中的特殊字符,用于标记字符串的结尾。它的 ASCII 值为 0。
在 C 中,字符串以此空字符终止,以指示字符串内容的结尾。对于处理字符串的函数来说,了解字符串的结束位置至关重要。例如,当您使用诸如strlen()确定字符串长度之类的函数时,它会通过计算字符数直到遇到空字符来计算长度。
例如:
char message[] = "Hello"; 该字符串“Hello”存储为'H', 'e', 'l', 'l', 'o', '\0'.
如果没有空字符,对字符串进行操作的 C 函数将不知道字符串在哪里结束,从而导致未定义的行为或意外结果。
字符串输入和输出函数:
使用 printf() 进行输出:
printf() 函数用于将字符串打印到标准输出(通常是控制台)。
例子:
#include <stdio.h>int main() {char str[] = "Hello";printf("The string is: %s\n", str);return 0;
} 输出:
The string is: Hello 使用 scanf() 作为输入:
scanf() 函数用于从标准输入(键盘)读取字符串。
例子:
#include <stdio.h>int main() {char name[20];printf("Enter your name: ");scanf("%s", name);printf("Hello, %s!\n", name);return 0;
} 输入:
Enter your name: Kareem 输出:
Hello, Kareem! 注意:scanf("%s", name)从用户输入中读取字符串,但会在第一个空白字符(空格、制表符、换行符)处停止。
使用 fgets() 作为输入:
该fgets()函数从标准输入读取一行文本,并在输入中允许空格。
例子:
#include <stdio.h>int main() {char sentence[50];printf("Enter a sentence: ");fgets(sentence, sizeof(sentence), stdin);printf("You entered: %s", sentence);return 0;
}
输入:
Enter a sentence: This is a sentence with spaces. 输出:
You entered: This is a sentence with spaces. 这些示例演示了如何在 C 语言中使用printf()、scanf()和fgets()函数进行字符串输入和输出,从而允许在程序执行期间与字符串进行交互。
字符串操作函数:
在 C 中,标头提供了一组允许操作字符串的函数。一些常用的函数包括:
strcpy():该函数将源字符串中的字符复制到目标字符串,直到遇到源字符串中的空字符('\0')。例子:
#include <stdio.h>
#include <string.h>int main() {char source[] = "Hello";char destination[20];strcpy(destination, source);printf("Destination string after copying: %s\n", destination);return 0;
} 输出:
Destination string after copying: Hello strcat():此函数将源字符串的内容连接(附加)到目标字符串的末尾。它从目标字符串的空字符 ('\0') 开始,并从源字符串复制字符,直到遇到其空字符。
例子:
#include <stdio.h>
#include <string.h>int main() {char str1[20] = "Hello";char str2[] = " World";strcat(str1, str2);printf("Concatenated string: %s\n", str1);return 0;
} 输出:
Concatenated string: Hello World strlen():该函数返回字符串str中的字符数,不包括空字符('\0')。例子:
#include <stdio.h>
#include <string.h>int main() {char str[] = "Hello";int length = strlen(str);printf("Length of the string: %d\n", length);return 0;
} 输出:
Length of the string: 5 以下是 C 语言中一些额外的常见字符串操作:
strcmp():该函数比较str1和str2的内容并返回:
- 如果两个字符串相等则为 0。
- 如果 str1 小于 str2,则该值小于 0。
- 如果 str1 大于 str2,则为大于 0 的值。例子:
char str1[] = "apple";
char str2[] = "banana";
int result = strcmp(str1, str2); strncpy():此函数将特定数量的字符从一个字符串复制到另一个字符串。下面的示例将最多 num 个字符从源复制到目标:
char source[] = "Hello";
char destination[10];
strncpy(destination, source, 3); // Copies only 3 characters
相关文章:
C 编程中使用字符串
理解字符串: C 中的字符串是使用字符数组来操作的。数组中的每个字符对应字符串的一个元素,字符串的结尾由空字符(\0)标记。这个空字符至关重要,因为它表示字符串的结尾,并允许函数确定字符串在内存中的结…...
【GD32307E-START】04 使用TinyMaix进行手写数字识别
【GD32307E-START】04 使用TinyMaix进行手写数字识别 参考博客 【GD32F427开发板试用】使用TinyMaix进行手写数字识别 https://blog.csdn.net/weixin_47569031/article/details/129009839 软硬件平台 GD32F307E-START Board开发板GCC Makefile TinyMaix简介 TinyMaix是国…...
qt-C++笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解
qt-C笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解 code review! 文章目录 qt-C笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解1.示例运行2.event->pos();详解3.event->pos()的坐标系原点4.Qt中的坐标系详解5.QMainWindow::mousePressEvent(event);详解 1.示例…...
小程序开发平台源码系统:搭建新的商业体系 附带完整的搭建教程
小程序开发平台源码系统是在移动互联网快速发展的背景下诞生的。随着微信小程序的普及,越来越多的人开始关注小程序的开发与运营。然而,对于很多初学者和小型企业来说,开发一个小程序需要专业的技术知识和大量的时间投入,这无疑是…...
css3新增的伪类有哪些?
CSS3新增的伪类有: :first-of-type,选择属于其父元素的特定类型的第一个子元素。:last-of-type,选择属于其父元素的特定类型的最后一个子元素。:only-of-type,选择属于其父元素的特定类型的唯一子元素。:only-child,选…...
开源软件license介绍与检测
开源License介绍 通俗来讲,开源许可证就是一种允许软件使用者在一定条件内按照需要自由使用和修改软件及其源代码的的法律条款。借此条款,软件作者可以将这些权利许可给使用者,并告知使用限制。这些许可条款可以由个人、商业公司或非赢利组织…...
【LeeCode】142.环形链表II
给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数…...
nodejs微信小程序+python+PHP健身房信息管理系统的设计与实现-计算机毕业设计推荐
目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…...
springboot集成springsecurity
转载自:www.javaman.cn 1、整合springsecurity 添加pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency>2、springsecurity认证授权流程…...
脏读、不可重复读、幻读
一、脏读 A事务读取B事务尚未提交的数据,此时如果B事务发生错误并执行回滚操作,那么A事务读取到的数据就是脏数据。就好像原本的数据比较干净、纯粹,此时由于B事务更改了它,这个数据变得不再纯粹。这个时候A事务立即读取了这个脏…...
思维模型 反馈效应
本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。反馈促进改进。 1 反馈效应的应用 1.1 反馈效应在营销中的应用 1 “可口可乐与百事可乐之战” 在 20 世纪 80 年代,可口可乐公司是全球最大的饮料公司之一,其市场…...
【PyTorch】线性回归
文章目录 1. 模型与代码实现2. Q&A 1. 模型与代码实现 模型 y ^ w 1 x 1 . . . w d x d b w ⊤ x b . \hat{y} w_1 x_1 ... w_d x_d b \mathbf{w}^\top \mathbf{x} b. y^w1x1...wdxdbw⊤xb. 代码实现 import torch from torch import nn from to…...
硝烟弥漫的科技战场——GPT之战
没想到2023年的双11之后,还能看到如此多的科技圈大佬针对GPT提出火药味十足的讨论和极具戏剧性的表演。 历史回顾: 11月6日,OpenAI发布会:GPT-4 Turbo模型、GPT应用商店、开源Whisper-large-v3等;11月17日࿰…...
re:Invent 构建未来:云计算生成式 AI 诞生科技新局面
文章目录 前言什么是云计算云计算类型亚马逊云科技云计算最多的功能最大的客户和合作伙伴社区最安全最快的创新速度最成熟的运营专业能力 什么是生成式 AI如何使用生成式 AI后记 前言 在科技发展的滚滚浪潮中,我们见证了云计算的崛起和生成式 AI 的突破,…...
oneApi实现并⾏排序算法
零、OneApi简介 oneAPI是由英特尔推出的一个开放、统一的编程模型和工具集合,旨在简化跨不同硬件架构的并行计算。oneAPI的目标是提供一个统一的编程模型,使开发人员能够使用相同的代码在不同类型的硬件上进行并行计算,包括CPU、GPU、FPGA和…...
语音芯片的BUSY状态指示功能特征:提升用户体验与系统稳定性的关键
在电子产品的音频系统中,语音芯片扮演着至关重要的角色。为了保证音频的流畅播放和功能的正常运行,语音芯片的各种状态指示功能变得尤为重要。其中,BUSY状态指示功能是语音芯片中的一项关键特征,它对于提升用户体验和系统稳定性具…...
Leetcode2661. 找出叠涂元素
Every day a Leetcode 题目来源:2661. 找出叠涂元素 解法1:哈希 题目很绕,理解题意后就很简单。 由于矩阵 mat 中每一个元素都不同,并且都在数组 arr 中,所以首先我们用一个哈希表 hash 来存储 mat 中每一个元素的…...
免费最新6款热门SEO优化排名工具
网站的存在感对于业务和品牌的成功至关重要。在众多网站推广方法中,搜索引擎优化(SEO)是提高网站可见性的关键。而SEO的核心之一就是关键词排名。为了更好地帮助您优化网站。 SEO关键词排名工具 在如今信息过载的互联网时代,用户…...
绝地求生在steam叫什么?
绝地求生在Steam的全名是《PlayerUnknowns Battlegrounds》,简称为PUBG。作为一款风靡全球的多人在线游戏,PUBG于2017年3月23日正式上线Steam平台,并迅速成为一部热门游戏。 PUBG以生存竞技为核心玩法,玩家将被投放到一个辽阔的荒…...
Elasticsearch:什么是大语言模型(LLM)?
大语言模型定义 大语言模型 (LLM) 是一种深度学习算法,可以执行各种自然语言处理 (natural language processing - NLP) 任务。 大型语言模型使用 Transformer 模型,并使用大量数据集进行训练 —— 因此规模很大。 这使他们能够识别、翻译、预测或生成文…...
路径遍历 PortSwigger labs
File path traversal, simple case 实验信息 平台:PortSwigger Web Security Academy 漏洞:路径遍历漏洞(Path Traversal) Lab:Server-side vulnerabilities - PortSwigger 难度:简单 漏洞原理 网站通过 filena…...
python-flask-djangol框架的 综合游戏攻略社区论坛交流系统的设计
目录需求分析与功能规划技术栈选择数据库设计核心功能实现社区互动设计性能优化安全措施部署与测试扩展功能项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作需求分析与功能规划 明确游戏攻略社区的核心需求:用户注册…...
告别格式混乱:用pdf2docx实现PDF到Word的无损转换
告别格式混乱:用pdf2docx实现PDF到Word的无损转换 【免费下载链接】pdf2docx Open source Python library converting pdf to docx. 项目地址: https://gitcode.com/gh_mirrors/pd/pdf2docx 你是否曾经遇到过这样的情况:从网上下载了一份重要的PD…...
OpenClaw成本优化:Qwen3.5-9B自部署接口降低token消耗实践
OpenClaw成本优化:Qwen3.5-9B自部署接口降低token消耗实践 1. 为什么需要关注OpenClaw的token消耗? 去年夏天,当我第一次用OpenClaw自动化处理月度报表时,收到了令人咋舌的账单——短短一周的自动化操作消耗了价值近200美元的AP…...
OpenClaw+百川2-13B量化模型:3个提升效率的自动化脚本
OpenClaw百川2-13B量化模型:3个提升效率的自动化脚本 1. 为什么选择这个组合? 去年冬天,我的下载文件夹已经积累了2000多个未整理文件。每次找文档都像在垃圾堆里翻钥匙,直到尝试用OpenClaw百川2-13B搭建自动化工作流。这个组合…...
技术数据解析 | CALCE圆柱电池数据集:SOC估计的OCV测试基准
1. CALCE圆柱电池数据集的核心价值 CALCE电池数据集由马里兰大学先进生命周期工程中心发布,是目前全球最权威的公开电池测试数据之一。这个数据集最吸引我的地方在于它提供了完整的实验环境记录和标准化的测试流程,这对于电池状态估计算法的开发简直是雪…...
我的世界Java版1.21.4的Fabric模组开发教程(二)创建物品
这是适用于Minecraft Java版1.21.4的Fabric模组开发系列教程专栏第二章——创建物品。想要阅读其他内容,请查看或订阅上面的专栏。 物品(Items) 指的是可以被玩家和其他实体拾起并使用的元素。想要在Minecraft中添加自己的物品,通常需要完成下面的步骤&…...
FxSound高级功能开发:插件系统与第三方集成技术深度解析
FxSound高级功能开发:插件系统与第三方集成技术深度解析 【免费下载链接】fxsound-app FxSound application and DSP source code 项目地址: https://gitcode.com/gh_mirrors/fx/fxsound-app FxSound是一款专业的数字音频处理软件,其强大的插件系…...
NaViL-9B效果实录:复杂场景下中英文混合文字识别准确率达98.2%
NaViL-9B效果实录:复杂场景下中英文混合文字识别准确率达98.2% 1. 模型介绍 NaViL-9B是一款原生多模态大语言模型,由专业研究机构开发。它能够同时处理纯文本问答和图片理解任务,特别擅长复杂场景下的文字识别。在实际测试中,该…...
使用Pi0具身智能开发教育机器人的完整指南
使用Pi0具身智能开发教育机器人的完整指南 1. 引言 教育领域正在经历一场智能化变革,传统的教学模式已经难以满足个性化学习的需求。想象一下,一个能够理解学生情绪、提供个性化辅导、并且24小时在线的教育助手——这就是教育机器人带来的可能性。 Pi…...
