《 C Primer Plus》

第三章:

2.

3.

4.

第四章:字符串和格式化输入输出

1.char类型数组和null字符

2.转换说明(%d等)和printf和scanf

2.1转换说明
2.2转换说明 修饰符(修饰转换说明的)

比如 %.2f,就是小数点后保留两个小数。这个.2就是修饰

补充sizeof和其返回值类型size_t和转换说明符%zu

sizeof和strlen都必须用size_t 进行转换,以及用%zu进行修饰

2.3printf
2.4scanf

返回的是读取成功的个数!!!

scanf返回的是个数,它已经把读到的内容写进地址对应的内存里面了。

当明确输入只有一个的时候,对于scanf,不管是%d, %s, %c,都只会读前面的第一个部分,后面的会断开读不到。scanf("%d", &num);输入:123 45,得到的是123 ; scanf("%c", &ch);输入:ab c,得到的是a.

此外注意,scanf只有%s的时候,不需要取地址

3.字符串和字符

4.const(和define的关系待补充)

但是具体和define的关系,搜了,没看懂。待后续补充

5.明示常量 limits.h和float.h头文件自带

第五章:运算符、表达式和语句

1.整数和浮点数计算

不管加减乘除,整数结果是整数,浮点数结果是浮点数,整数和浮点数或者浮点数和整数,不管加减乘除都是浮点数。

注意下面这个截断,不是四舍五入,而是直接不要小数部分。

2.取模

6.while语句

6.1表示真

6.2选择哪个循环方法

6.3数组

数组可以有多种类型

字符串存在char类型的数组里面,char类型的数组如果以\0结尾那么就是字符串

7.C控制语句:分支和跳转

7.1scanf\getchar\fgets

对比维度 getchar() scanf() fgets()
函数原型 int getchar(void); int scanf(const char *format, ...); char *fgets(char *str, int n, FILE *stream);
读取单位 单个字符(包括空白字符) 按格式字符串解析的若干数据(如整数、字符串等) 一整行数据(包括空格、回车等所有字符)
返回值 成功:读取字符的 ASCII 码(int 类型) 失败 / 文件结束:EOF 成功:成功赋值的变量个数 失败 / 文件结束:EOF 成功:指向接收缓冲区的指针 失败 / 文件结束:NULL
处理空白字符 不忽略任何空白字符(空格、回车、Tab 均会被读取) 1. 读取非字符串格式(%d/%f 等):自动跳过开头空白字符 2. 读取字符串(%s):跳过开头空白,遇空白则停止 不忽略任何空白字符,会将回车 \n 作为行的一部分读入
缓冲区处理 从标准输入缓冲区读取单个字符,不残留未处理字符(除非手动控制) 未匹配的字符(包括回车)会残留在输入缓冲区,可能影响后续输入 读取到换行符或达到长度上限时停止,剩余字符留在缓冲区
字符串读取限制 不直接支持字符串读取(需循环调用拼接) %s 读取时,无长度限制,遇空白停止(无法读带空格的字符串) 第二个参数 n 限制最大读取长度(含 \0),可读取带空格的完整行
安全性 高(每次只处理 1 个字符,无溢出风险) 低(%s 无长度限制,易导致缓冲区溢出) 高(通过 n 控制长度,可避免溢出)
典型使用场景 1. 读取单个字符(如菜单选择 'Y/N') 2. 清空输入缓冲区 3. 逐字符处理输入 1. 读取结构化数据(如 10 3.14 hello) 2. 简单的无空格输入场景 1. 读取带空格的完整行(如用户输入的句子) 2. 读取配置文件中的一行内容 3. 需要安全处理输入的场景
示例代码 char c = getchar(); int a; char s[10]; scanf("%d %s", &a, s); char buf[100]; fgets(buf, 100, stdin);
常见问题 连续调用时会读取到回车等空白字符 1. 残留回车导致后续输入异常 2. %s 无法读取带空格的字符串 读取的内容包含回车符,需手动处理(如替换为 \0
清空缓冲区方法 无需额外处理(每次读取 1 个字符) while(getchar() != '\n');(清除残留字符) 若读取不完整,需循环读取剩余内容
相关推荐
nightunderblackcat3 分钟前
新手向:Python实现数据可视化图表生成
开发语言·python·信息可视化
huluang1 小时前
PHP版本控制系统:高效文档管理
开发语言·php
WSSWWWSSW7 小时前
Numpy科学计算与数据分析:Numpy文件操作入门之数组数据的读取和保存
开发语言·python·数据挖掘·数据分析·numpy
芥子须弥Office7 小时前
从C++0基础到C++入门 (第二十五节:指针【所占内存空间】)
c语言·开发语言·c++·笔记
Q741_1478 小时前
如何判断一个数是 2 的幂 / 3 的幂 / 4 的幂 / n 的幂 位运算 总结和思考 每日一题 C++的题解与思路
开发语言·c++·算法·leetcode·位运算·总结思考
半瓶啤酒一醉方休9 小时前
C# 查询电脑已安装所有软件并打印txt保存到桌面
开发语言·c#
钢铁男儿9 小时前
深入解析C#并行编程:从并行循环到异步编程模式
开发语言·c#
小郝 小郝9 小时前
开启单片机
c语言·单片机·嵌入式硬件·学习·51单片机
小杜的生信筆記10 小时前
基于R语言,“上百种机器学习模型”学习教程 | Mime包
开发语言·学习·机器学习·r语言·sci