声明:本篇文章只是个人知识盲区、知识弱点、重点部分的归纳总结,望各位大佬不喜勿喷。梳理顺序是按照书籍的实际顺序梳理,转载请注明出处。
作者:sumjess
适用:这本书我已经看过4遍了,但是该书的知识点我并不是都常用,所以总会有忘记的,所以来写这本书的随手笔记,记录重点、易忘点。该博客可以当做字典,也可以当做你的笔记。
目前内容:第四章总结
第四章:字符串和格式化输入/输出
1、字符串介绍:
(1)\0为空字符,C语言用它来标记字符串的结束。空字符不是数字0,它是非打印字符,其ASCII码值是0
(2)用数组存字符串时,数组大小要记得+1,留一个给空字符;
(3)用双括号括起来的文本是一个字符串,编译器会自动在末尾加一个空字符;
(4)字符串和字符:‘x’相当于x,而“x”相当于x\0;
(5)上一个笔记提到了sizeof运算符,它是以字节为单位给出对象大小。strlen()函数给出字符串中的字符长度;
(6)string.h头文件包含多个与字符串相关的函数原型,包括strlen();
2、常量和C预处理器:
(1)#define指令还定义字符和字符串常量。前者使单引号,后者使双引号。
#define BEEP '\a'
#define COPS "now you have"
(2)const限定符:用于限定一个变量为只读,不可更改。
(3)明示常量:C头文件limits.h和float.h分别提供了与整数类型和浮点类型大小限制相关的详细信息。每个头文件都定义了一系列供实现使用的明示常量。
3、printf()和scanf():
(1)printf和scanf函数能让用户可以和程序交流,他们是输入输出函数,或者简称为I/O;
(2)printf:
①转换说明大全:https://blog.csdn.net/jason_chen13/article/details/50773297
②格式字符串中的转换说明一定要与后面的每个项相匹配
③修饰符:
练习题见:https://blog.csdn.net/qq_38351824/article/details/79644036
④ sizeof运算符以字节为单位返回类型或值大小;
⑤ printf()函数也有一个返回值,它返回打印字符的个数。如果输出错误,printf()则返回一个负值;
⑥ 打印较长的字符串:
有三种形式:
printf("qwerty");
printf("uiop");
printf("qwerty\
uiop");
printf("qwerty"
"uiop")'
(3)使用scanf()
① 使用scanf:
&& 如果使用scanf()读取基本变量类型的值,在变量名前加上一个&;
&& 如果使用scanf()把字符串读入字符数组中,不要使用&;
eg:
int age;
float assets;
char pet[30];
scanf("%d %f",&age,&assets);
scanf("%s",pet);
② scanf()函数使用空白(换行符、制表符和空格)把输入分成多个字段。
③ scanf转换说明和修饰符:
④ 当scanf()把字符串放进指定数组中时,它会在字符序列的末尾加上‘\0’,让数组中的内容成为一个C字符串。
⑤ 无论程序中需要读取整数、小数、字符、还是字符串,都可以使用scanf函数。
⑥ scanf()函数返回成功读取的项数。当scanf()检测到“文件末尾”时,会返回EOF(EOF是stdio.h中定义的特殊值,通常用#define指令把EOF定义为-1)。
4、printf()和scanf()的*修饰符:
eg:
printf("%*.*f",4,5,test);//相当于printf("%4.5f",test);
scanf("%*d %*d %d",&test);//前两个值将不会被读取;
5、本章小结:
① 无论是表示成字符常量还是储存在字符数组中,都以一个叫做空字符的隐藏字符结尾;
② 在程序中,最好用#define定义数值常量,用const关键字声明的变量为只读变量。在程序中使用符号常量(明示常量),提高了程序的可读性和可维护性;
③ 空白字符(制表符、空格和换行符)在scanf()处理输入时起着至关重要的作用。除了%c模式(读取下个字符),scanf()在读取输入时会跳过非空白字符前的所有空白字符,然后一直读取字符,直至遇到空白字符或正在读取字符不匹配的字符。
④ C预处理器为预处理指令(以#符号开始)查找源代码程序,并在开始编译程序之前处理他们,处理器根据#include指令把另一个文件中的内容添加到指令所在位置。