文件
在线C环境:https://clin.icourse163.org/
格式化输?输出
2. printf和scanf的返回值
- 读?的项目数
- 输出的字符数
- 在要求严格的程序中,应该判断每次调?scanf或 printf的返回值,从?了解程序运?中是否存在问题
3. ?件输?输出
?>和<做重定向
4. 输?结束
getchar读到了EOF
scanf返回?于要求读的数量
5. FILE
FILE* fopen(const char * restrict path, const char * restrict mode);
int fclose(FILE *stream);
fscanf(FILE*, ...)
fprintf(FILE*, ...)
6.打开?件的标准代码
7. fopen
8. ?进制?件
- 其实所有的?件最终都是?进制的
- ?本?件??是?最简单的?式可以读写的?件
- more、tail
- cat
- vi
- ??进制?件是需要专?的程序来读写的?件
- ?本?件的输?输出是格式化,可能经过转码
9.?本 vs ?进制
- Unix喜欢??本?件来做数据存储和程序配置
- 交互式终端的出现使得?们喜欢??本和计算机 “talk”
- Unix的shell提供了?些读写?本的?程序
- Windows喜欢??进制?件
- DOS是草根?化,并不继承和熟悉Unix?化
- PC刚开始的时候能?有限,DOS的能?更有限,? 进制更接近底层
- ?本的优势是?便?类读写,?且跨平台
- ?本的缺点是程序输?输出要经过格式化,开销?
- ?进制的缺点是?类读写困难,?且不跨平台
- int的??不?致,??端的问题...
- ?进制的优点是程序读写快
10.程序为什么要?件
- 配置
- Unix??本,Windows?注册表
- 数据
- 稍微有点量的数据都放数据库了
- 媒体
- 这个只能是?进制的
- 现实是,程序通过第三?库来读写?件,很少直接读 写?进制?件
11. ?进制读写
12. 为什么nitem?
- 因为?进制?件的读写?般都是通过对?个结构变量 的操作来进?的
- 于是nitem就是?来说明这次读写?个结构变量!
13. 在?件中定位
- long ftell(FILE *stream);
- int fseek(FILE *stream, long offset, int whence);
- SEEK_SET:从头开始
- SEEK_CUR:从当前位置开始
- SEEK_END:从尾开始(倒过来)
14. 可移植性
- 这样的?进制?件不具有可移植性
- 在int为32位的机器上写成的数据?件?法直接在int 为64位的机器上正确读出
- 解决?案之?是放弃使?int,?是typedef具有明确 ??的类型
- 更好的?案是??本
位运算
1. 按位运算
C有这些按位运算的运算符:
& 按位的与
| 按位的
~ 按位取反或
^ 按位的异或
<< 左移
>> 右移
2. 按位与 &
3. 按位或 |
4. 按位取反 ~
5. 逻辑运算vs按位运算
6. 左移 <<
7. 右移 >>
no zuo no die
8.输出?个数的?进制
9. 位段
- 可以直接?位段的成员名称来访问
- ?移位、与、或还?便
- 编译器会安排其中的位的排列,不具有可移植性
- 当所需的位超过?个int时会采?多个int