再学C语言10:字符串(1)

news2025/1/24 11:41:48

一、字符串定义

字符串:一个或多个字符的序列

"hello world!"

双引号并不是字符串的一部分,只是用于通知编译器其中包含了一个字符串

C没有为字符串定义专门的变量类型,而是将其存储在char数组中

字符串中的字符存放在相邻的存储单元中,每个字符占用一个单元

空字符:\0,用于标记字符串的结束;空字符是非打印字符,其ASCII码值为0

C的字符串存储时以空字符结束,因此数组单元的个数比需存储字符数多1

数组:同一类型的数据元素的有序序列

示例:定义一个用于存储字符串的数组,每个单元可存储一个char类型的值(字符)

char name[20];

二、字符串使用

示例代码:

/* test of character string */
#include <stdio.h>
int main(void)
{
    char name[60];

    printf("Please enter your name: \n");
    scanf("%s", name);
    printf("Your name is: %s. \n", name);
    return 0;
}

运行结果:

一般情况下,使用%s的scanf()只会把一个单词而不是把整个语句作为字符串读入

字符串常量“A”与字符常量‘A’的区别:

1)前者为char数组,后者为字符

2)前者实际上由两个字符(‘A’和空字符‘\0’)组成

三、strlen()函数

strlen()函数功能:以字符为单位给出字符串的长度

示例代码:

/* test of character string and strlen function */
#include <stdio.h>
#include <string.h> // 提供strlen()函数的原型

int main(void)
{
    char name[60];

    printf("Please enter your name: \n");
    scanf("%s", name);
    printf("Your name is: %s. \n", name);

    printf("Your name has %d letters in all. \n", strlen(name));
    printf("It occupies %d bytes. \n", sizeof(name));
    return 0;
}

运行结果:

这里需要留意strlen()函数和之前的sizeof()函数之间的功能区别;空字符可以告诉strlen()函数在哪里停止计数;sizeof()函数会把空字符也计算在内

string.h头文件:包含许多与字符串相关的函数的原型(如字符串复制函数、字符串搜索函数等),包括strlen()函数

一般情况:C把C函数库分为多个相关函数的系列,并为每个系列提供一个头文件

sizeof name    // 具体的量,圆括号可以省略
sizeof(name)   // 具体的量
sizeof(int)    // 类型,圆括号不可或缺

sizeof是否使用圆括号取决于想获取类型的大小还是某个具体量的大小,圆括号对于类型是必须的,对于具体量是可选的;建议编程时统一使用带圆括号的写法,不容易出错

四、符号常量和C预处理器

使用符号常量的好处:1)易读;2)易修改

建立符号常量的第一个方法:C预处理器

#define PI 3.14

当编译程序时,值3.14将会在PI出现的每一处地方代替它;运行时,所有替代已经完成;这样定义的常量称为明显常量(manifest constant)

大写符号常量可以让程序易读

符号常量所用的名字必须满足变量命名规则:可以使用大写和小写字母、数字和下划线,第一个字符不能是数字

#define语句也可以用于定义字符和字符串常量:

#define BEEP '\a'
#define NAME "Forster"

建立符号常量的第二个方法:const关键字

const关键字:把一个变量声明转换成常量声明,为C90新增功能

const int MONTHS = 12; // MONTHS是一个代表12的符号常量

转换后,MONTHS成为一个只读值

建立符号常量的第三个方法:枚举(enum)功能

结构体中涉及

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

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

相关文章

Amazon 4.7 星评,领域新经典,了解服务设计就读它

2011 年&#xff0c;Adaptive Path 公司的 Brandon Schauer 粗略估算&#xff0c;美国每年在服务的规划和设计上大约花费 20 亿美元&#xff0c;但其中仅有 7000 万美元&#xff08;大约 3.5%&#xff09;花在了“服务设计”上。做另外 96.5% 的工作的那些人&#xff0c;从不觉…

参加大学生数学建模大赛,Matlab和Python到底哪个更好?

前言 后台的小伙伴经常会问编程过程中&#xff0c;MATLAB和Python到底哪个更好&#xff1f;这个问题一直困惑很多同学&#xff0c;今天小编来给大家从实用型来综合分析一下&#xff1a; 首先从两者各自的应用做个对比。 一、python的优势 Python相对于Matlab最大的优势&…

Mac M2芯 k8s(minikube)超详细实战 - 单节点部分

概述 我使用的电脑是Mac pro M2芯的&#xff0c;使用的虚拟环境是 Ubuntu 22.04 &#xff0c;M2芯兼容性不是特别好&#xff0c;所以尽量跟我博客中的版本保持一致。 虚拟机环境 Ubuntu 22.04docker &#xff1a;20.10.17minikube&#xff1a;v1.25.2 搭建minikube虚拟机环境…

【强化学习基础】强化学习的基本概念:状态、动作、智能体、策略、奖励、状态转移、轨迹、回报、价值函数

文章目录1.状态&#xff08;State&#xff09;2.动作&#xff08;Action&#xff09;3.智能体&#xff08;Agent&#xff09;4.策略&#xff08;Policy&#xff09;5.奖励&#xff08;Reward&#xff09;6.状态转移&#xff08;State transition&#xff09;7.智能体与环境交互…

高效率的Python开发工具——PyCharm v2022.3正式发布

JetBrains PyCharm是一种Python IDE&#xff0c;其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外&#xff0c;该IDE提供了一些高级功能&#xff0c;以用于Django框架下的专业Web开发。 PyCharm v2022.3官方正式版下载(q技术交流&#xff1a;786598704)…

wireshark抓包数据提取TCP/UDP/RTP负载数据方法

wireshark抓包数据提取TCP_UDP_RTP负载数据方法 文章目录wireshark抓包数据提取TCP_UDP_RTP负载数据方法1 背景2 TCP和UDP负载提取方式3 RTP负载提取方式1 背景 在视频抓包分析过程中&#xff0c;有时候需要从TCP、UDP、RTP中直接提取payload数据&#xff0c;比如较老的摄像机…

微课堂助力在线教育招生引流方式_付费视频系统搭建对在线教育的作用

一、借助优惠码线上线下推广课程 1、线下发传单&#xff1a; 机构先在我们后台创建对应课程的通用优惠码&#xff0c;然后再制作课程传单介绍页。传单上显示出对应课程的通用优惠码&#xff0c;线下派发传单给到用户。 2、线下刮刮卡片推广&#xff1a;将私有码制作成卡片配合…

SVM(二)对偶问题转化以及求解

上篇&#xff1a; SVM&#xff08;支持向量机&#xff09;&#xff08;一&#xff09;基本形式推导 凸优化 考虑如下优化问题&#xff1a; 应用拉格朗日乘子法&#xff1a; 定义拉格朗日对偶函数G\mathcal{G}G&#xff0c;这里 infinfinf 是上确界&#xff08;集合的最小上…

超标量处理器设计——第十章_提交

参考《超标量处理器》姚永斌著 文章目录超标量处理器设计——第十章_提交10.1 概述10.2 重排序缓存10.2.1 一般结构10.2.2 端口需求10.3 管理处理器的状态10.3.1 使用ROB管理指令集定义的状态10.3.2 使用物理寄存器管理指令集定义的状态10.4 特殊情况处理10.4.1 分支预测失败的…

【微服务】Nacos ⼀致性协议

目录 一、为什么 Nacos 需要⼀致性协议 二、为什么 Nacos 选择了 Raft 以及 Distro 1、从服务注册发现来看 2、从配置管理来看 3、为什么是 Raft 和 Distro 呢 三、早期的 Nacos ⼀致性协议 四、当前 Nacos 的⼀致性协议层 &#x1f496; Spring家族及微服务系列文章 …

【关于时间序列的ML】项目 2 :使用机器学习预测股票价格

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

5G无线技术基础自学系列 | RF优化流程

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 在介绍完了RF优化的思路和措施之后&…

【Linux 软件包管理器 yum】

While there is life there is hope. 目录 1 什么是软件包 2 关于 rzsz 3 注意事项 4 查看软件包 5 如何安装软件 6 如何卸载软件 总结 1 什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人…

[译] 来了解一下 Island Architecture 孤岛架构

建立一个网站有不同的方法&#xff0c;其中之一便是多页应用程序(MPA)&#xff0c;它大约在十年前就过时了&#xff0c;现在又重新流行起来。MPA已经被Angular和React以及其他现代框架所普及的单页应用(SPA)方法所取代。 由于应用软件迭代趋势的运作方式&#xff0c;方法/工具…

异步任务如何测试?

总是能收到这样的问题&#xff1a; 异步任务如何测试&#xff1f;异步的接口如何测试&#xff1f;可以通过自动化来保证异步任务是否执行了吗&#xff1f;能否保证执行是否成功&#xff1f; 收到这样的问题&#xff0c;其实大家的问题都是通用的&#xff0c;那么正好整理下我…

毫无基础的人如何入门 Python ?

Python 我也是从零开始自学的&#xff0c;因为工作的原因&#xff0c;我需要 python 做很多数据抓取的工作。我把自己的学习的感想&#xff0c;做了一下总结&#xff0c;阅读到最后&#xff0c;一定会有惊喜。 首选&#xff0c;我不会一下子&#xff0c;给你推荐一堆视频课程&…

从git上新拉下来的vue项目,没有node_modules依赖,npm install报错,node-sass报错

因为没有node_modules依赖&#xff0c;我直接 1.npm install&#xff0c;但是报错&#xff1a; 2.npm install --force报错 3.npm audit fix --force报错 4.npm install --legacy-peer-deps报错 5.npm install --registry https://registry.npm.taobao.org 直接安装淘宝镜像也…

一名智能驾驶产品经理的自我修养

已剪辑自: https://mp.weixin.qq.com/s/fCSO7hmP3FP-Xat-NyFG0A 随着智能驾驶浪潮的兴起&#xff0c;市场上产生了对相关人才的大量需求&#xff0c;也诞生了一些传统汽车行业所没有的新兴岗位。其中&#xff0c;智驾产品经理&#xff0c;作为一个典型的、互联网与汽车行业深度…

应用反演工程对四层减反膜进行分析

有很多的过程可以被称之为反演工程&#xff0c;但在Essential Macleod中&#xff0c;该术语的意思是用来识别理想设计的和实际生产尝试之间的差异。该功能大致可以概括为“出了什么问题”。这一过程类似于优化&#xff0c;在优化过程中&#xff0c;将初始设计进行优化&#xff…

软饭硬吃,因为“测试能力单一”面试多次被拒,给跳槽的各位测试人员提个醒

最近公司有几位同事打算离职出去看看其他机会&#xff0c;几轮面试下来感觉很好&#xff0c;最终却没有收到几家offer。这几位同事都有好几年工作经验&#xff0c;测试经验丰富&#xff0c;也参与过大型项目的测试&#xff0c;在测试用例设计、测试流程把控、测试执行等方面做得…