有基础,进阶用,个人查漏补缺
第八章 字符输入/输出和输入验证
-
缓冲输入和无缓冲输入
- 缓冲输入:在输入时,直到用户按下enter键之前不会打印刚输入的字符。
- 用户输入的字符被收集并储存在一个被称为缓冲区的临时存储区,按下enter键后程序才可以使用用户输入的字符
- 缓冲分为两类:完全缓冲I/O和行缓冲I/O。
- 完全缓冲I/O指的是当缓冲区被填满时才刷新缓冲区,内容才被发送到目的地,通常出现在文件输入中。缓冲区大小取决于系统,常见是512字节和4096字节。
- 行缓冲I/O指的是在出现换行符时刷新缓冲区,键盘输入通常是行缓冲输入,所以在按下enter键后才刷新缓冲区。
- 目前的C标准都规定输入是缓冲的
- 无缓冲输入:用户输入字符后立刻打印该字符,也叫回显输入
- 缓冲输入:在输入时,直到用户按下enter键之前不会打印刚输入的字符。
-
文件结尾
-
C语言把输入输出设备视为存储设备上的普通文件,即可以把键盘输入看作文件,使用文件结尾检测器结束键盘输入
-
操作系统要以某种方式判断文件的开始和结束,如在文件末尾放一个特殊字符标记文件结尾,或者储存文件大小的信息。
-
无论使用哪种方法,C语言中,用getchar()读取文件或者使用scanf(),检测到文件结尾时将返回一个特殊的值,即EOF(end of file)。通常EOF定义在stdio.h文件中。
#define EOF (-1)//0~127的值对应标准字符集,-1则可以避免对应任何字符
-
检测是否已经输入结束
while((ch = getchar()) != EOF)
-
-
重定向搞不懂,笔记待定
-
scanf与getchar的用法和常见错误详解——C语言中scanf与getchar的用法和常见错误详解
第九章 函数
- 声明函数可以在main()之前,也可以在main()里面,只要在调用函数前声明即可
- 递归方案更简洁,但是效率没有循环高
- 函数中的return只能把被调函数中的一个值传入主调函数
- 指针是一个值为内存地址的变量(或数据对象),即指针变量的值是地址
- ptr=&pooh;//把pooh的地址赋给ptr,或ptr指向pooh
- 解引用运算符/间接运算符 * :找出在某地址的中的值
- ptr = &bah;和val = *ptr;相当于val = bah;
- 指针声明:int * n;//在中间加个*,其中*和变量名中的空格可有可无。该变量叫做“指向int类型的指针”,n的值是一个地址,地址都由一个无符号整数表示,但是指针不是整数类型。