C primer plus 学习笔记 第4章 字符串和格式化输入/输出

简介: C primer plus 学习笔记 第4章 字符串和格式化输入/输出

     第4章 字符串和格式化输入/输出

4.1 前导程序(略)

 

4.2 字符串简介

字符串(character string)是双引号括起的一串字符,如"zi fu chuang"

4.2.1 char类型数组和null字符

C语言没有专门存储字符串的变量类型,字符串存储在char类型数组中。

在数组末尾有一个空字符(null character)  \0 标记字符串结束。

4.2.2 使用字符串

char name[40];

scanf("%s", name);

printf("Hello, %s\n", name);


tip(只有一个字符的字符串和字符不同): ‘x' 和"x“ 是不同的,单引号的是字符;双引号的是字符串,实际上是两个字符x和\0组成的。

4.2.3 strlen()函数

strlen()函数 求字符串字符长度  它的声明包含在string.h中。

4.3 常量和C预处理器

定义常量

#define NAME value

//注意 后面没;

例如:define PI 3.1415

4.3.1 const限定符

const关键字 限定一个变量为只读,

const int MONTHS = 12;

4.3.2 明示常量

C头文件limits.h和float.h 分别提供了与整数类型和浮点数类型大小限制相关的信息。

4.4 printf()和scanf()

输出 和 输入函数,简称I/O函数。

4.4.1 printf()函数

printf()的格式是

printf(格式字符串,待打印项1,待打印项2,...);

例子:printf("My age is %d, my weight is %g kg", 18,66.5);

Tip:printf()函数也有返回值,它返回打印的字符数,如果输出错误,则返回负数。

输出长字符串的3种方式

4.4.5使用scanf()

scanf()

格式和printf()类似,用来输入

例子:scanf("%d%d",&a,&b);

scanf()返回值是成功读取的项数,而读入失败时,返回0,对文件读写来说,读到文件末尾返回EOF

 转换说明:

 

4.4.6  * 修饰符

如果想通过程序指定字段宽度,可以使用*代替字段宽度

unsigned width, precision;
int numberf = 256;double weight = 242.5;
scanf("%d", &width);printf("number = %*d\n",width,number); //!-指定宽度
scanf("%d%d",&width,&precision);
printf("weight = %*.*f\n",width,precision, weight);//!*指定宽度和精度


相关文章
|
Kubernetes 关系型数据库 容器
Kubernetes之路 3 - 解决服务依赖
在容器服务的客户群中,一个经常被问起的问题就是如何处理服务间依赖。本文介绍了常见的解决方法来实现服务的依赖检查,还进一步用示例展示了如何利用init container, liveness/readiness探针等技术实现服务健康检查,依赖检查等等功能。
12225 1
|
7月前
|
移动开发 Dart 前端开发
《社交应用动态表情:RN与Flutter实战解码》
React Native依托JavaScript和React,通过便捷调用原生模块实现动态表情的流畅展示与交互;其组件化开发模式提升了代码可维护性,活跃社区提供的第三方库简化了复杂解析工作。Flutter则以Dart语言为基础,利用自绘制UI体系和Skia引擎实现卓越动画效果,异步编程特性保障多任务流畅运行,热重载功能显著提高开发效率。两者在实现动态表情时均需应对资源管理、格式解析、性能优化及安全性等挑战。动态表情作为社交应用的核心功能,其发送与解析能力已成为衡量用户体验的重要标准,而React Native和Flutter凭借各自技术优势为开发者提供了高效解决方案。
125 17
|
10月前
|
应用服务中间件 Linux nginx
部署使用 CHAT-NEXT-WEB 基于 Deepseek
本文介绍如何在阿里云轻量服务器上部署基于 `Deepseek` 的 `CHAT-NEXT-WEB` 项目。首先,准备一台 Linux 服务器并安装 Docker,确保防火墙允许特定端口访问。接着,通过阿里云容器镜像服务解决国内网络限制问题,将镜像推送到私有仓库并拉取到本地。配置并启动 `chat-next` 项目,使用 Deepseek API 进行优化。最后,安装 Nginx 和 Certbot 配置 HTTPS 访问,确保安全性和自动续签。整个过程需严格遵循官方文档,以避免因网络问题导致的安装失败。
|
存储 编译器 C语言
C++入门2——类与对象1(类的定义和this指针)
C++入门2——类与对象1(类的定义和this指针)
214 2
|
前端开发 Java Spring
一文带你深入理解SpringBean生命周期之InitializingBean详解
一文带你深入理解SpringBean生命周期之InitializingBean详解
1254 0
一文带你深入理解SpringBean生命周期之InitializingBean详解
|
机器学习/深度学习 算法 计算机视觉
基于多注意力融合的抗遮挡目标跟踪算法综述
基于多注意力融合的抗遮挡目标跟踪算法综述
921 0
基于多注意力融合的抗遮挡目标跟踪算法综述
|
存储
【洛谷 P2141】[NOIP2014 普及组] 珠心算测验 题解(集合+多重循环)
**NOIP2014普及组的珠心算测验题要求参赛者找出给定集合中多少个数可表示为其他两个不同数的和。输入含n个正整数,输出满足条件的数的个数。样例输入4个数,输出2,因1+2=3且1+3=4。代码利用集合存储和,遍历所有数对组合,当找到匹配和时插入集合,最后输出集合大小。注意数据规模为n≤100,数不超过10,000。**
422 0
|
分布式计算 Hadoop
Zookeeper 启动失败【Cannot open channel to 3 at election address...】
解决Hadoop Zookeeper连接问题:检查Zookeeper目录权限,使用`sudo chown -R username:username /your_zookeeper_path`授权。确保`zoo.cfg`配置`quorumListenOnAllIPs=true`并监听所有IP。关键是机器ID(如`server.0`, `server.1`等)需与IP或主机名对应,修正`zoo.cfg`中的设置,例如`server.0=hadoop120:2888:3888`等。重启Zookeeper后,问题解决。
803 0
|
机器学习/深度学习 算法 数据可视化
分类预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元多输入分类预测
分类预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元多输入分类预测
|
机器学习/深度学习 iOS开发 MacOS
MAC系统机器学习环境配置常见问题
MAC系统机器学习环境配置常见问题