1、哈尔滨工业大学哈尔滨工业大学计算机科学与技术学院计算机科学与技术学院苏小红苏小红2023-1-302/412023-1-303/41输入输入/输出输出设备设备存储器存储器运算器运算器控制器控制器程序程序和输入数据和输入数据输出结果输出结果取出数据取出数据存入数据存入数据操作命令操作命令存取命令存取命令取出取出程序指令程序指令输入输入/输出输出命令命令计算结果计算结果CPU大脑大脑记忆装置记忆装置(Memory)眼睛和耳朵眼睛和耳朵(I/O devices)2023-1-304/412023-1-305/412023-1-306/412023-1-307/412023-1-308/412023-
2、1-309/412023-1-3010/412023-1-3011/412023-1-3012/41如果存如果存12341234呢?呢?2023-1-3013/412023-1-3014/41缓冲型文件系统缓冲型文件系统指系统自动在内存中为每一个正在使用的文件开辟一个指系统自动在内存中为每一个正在使用的文件开辟一个缓冲区,在读写文件时,数据先送到缓冲区,再传给缓冲区,在读写文件时,数据先送到缓冲区,再传给C程序或外存上程序或外存上缓冲型文件系统利用文件指针标识文件缓冲型文件系统利用文件指针标识文件缓冲型文件系统中的文件操作,也称高级文件操作缓冲型文件系统中的文件操作,也称高级文件操作 高级文件
3、操作函数高级文件操作函数是是ANSI C定义的文件操作函数,具定义的文件操作函数,具有跨平台和可移植的能力有跨平台和可移植的能力 非缓冲型文件系统非缓冲型文件系统不会自动设置文件缓冲区,缓冲区需由程序员自己设定不会自动设置文件缓冲区,缓冲区需由程序员自己设定非缓冲型文件系统没有文件指针,它使用称为文件号的非缓冲型文件系统没有文件指针,它使用称为文件号的整数来标识文件整数来标识文件2023-1-3015/412023-1-3016/412023-1-3017/412023-1-3018/412023-1-3019/412023-1-3020/41为什么要判断文件打开是否成功呢?为什么要判断文件打
4、开是否成功呢?2023-1-3021/41函数函数feof()检查是否到达文件尾,检查是否到达文件尾,当文件位置指针指向文件尾时,返当文件位置指针指向文件尾时,返回非回非0值,否则返回值,否则返回0值值2023-1-3022/412023-1-3023/41为什么在输出第为什么在输出第128个字符的个字符的ASCII码值后又输出了一个码值后又输出了一个-1呢?呢?2023-1-3024/41为什么在输出第为什么在输出第128个字符的个字符的ASCII码值后又输出了一个码值后又输出了一个-1呢?呢?使用函数使用函数feof()时,仅当读到文件结束符时,仅当读到文件结束符时才能判断出到达文件尾,而
5、文件结束符是时才能判断出到达文件尾,而文件结束符是一个值为一个值为-1的不可打印的控制字符的不可打印的控制字符if(!iscntrl(ch)2023-1-3025/412023-1-3026/412023-1-3027/41fscanf(fp,%d,%6.2f,&i,&t);第第1个参数为文件指针,第个参数为文件指针,第2 个参数为格式控制参数,第个参数为格式控制参数,第3 个参数为地址参数表列个参数为地址参数表列fprintf(fp,%d,%6.2f,i,t);第第1个参数为文件指针,第个参数为文件指针,第2 个参数为格式控制参数,第个参数为格式控制参数,第3 个参数为输出参数表列个参数为输出参数表列2023-1-3028/41将平均分作为将平均分作为STUDENT结构体的成员,使函数的结构体的成员,使函数的接口更简洁接口更简洁2023-1-3029/412023-1-3030/412023-1-3031/412023-1-3032/412023-1-3033/412023-1-3034/412023-1-3035/412023-1-3036/412023-1-3037/412023-1-3038/412023-1-3039/412023-1-3040/412023-1-3041/41Questions and answers