C Primer Plus (第六版) 中文版 随手笔记(三)

时间:2022-08-27 08:18:36

声明:本篇文章只是个人知识盲区、知识弱点、重点部分的归纳总结,望各位大佬不喜勿喷。梳理顺序是按照书籍的实际顺序梳理,转载请注明出处。

作者: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

         格式字符串中的转换说明一定要与后面的每个项相匹配

         ③修饰符:

C Primer Plus (第六版) 中文版 随手笔记(三)C Primer Plus (第六版) 中文版 随手笔记(三)

练习题见: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转换说明和修饰符:

C Primer Plus (第六版) 中文版 随手笔记(三)C Primer Plus (第六版) 中文版 随手笔记(三)

            ④ 当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指令把另一个文件中的内容添加到指令所在位置。