HM157 空档案判定
HM157 空档案判定
来源: 第 157 集 职工管理系统-文件交互-读文件2-文件为空
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
档案有三种启动状态。上一题处理了“文件未创建”。本题处理第二种:**文件已经存在,但一行数据都没有**(用户执行过清空,磁盘上只剩空文件)。
判断“存在且为空”的方法是:用已经打开的 ifstream 先 >> 读走一个字符。空文件里实际上只剩文件尾标记,这个字符被读走后,再调用 eof():为真就说明读到头了,文件为空。这是一个新接口。
文件为空时的初始化与文件不存在完全相同:人数 \(=0\),数组指针为空,fileIsEmpty = true,然后 close 并 return。两种情况都把标志置真;什么时候改成假?每成功添加一名职工,就必须把 fileIsEmpty 更新为 false,否则标志只会“置空”不会“置非空”。
若文件存在并且能读到字符(eof() 为假),说明里面有数据,不要按空档案初始化,此时 fileIsEmpty 视为假。
输入格式
第一行一个整数 \(kind\)(\(kind \in \{0,1,2\}\)):
- \(0\):删除
empFile.txt(文件不存在)。 - \(1\):创建一份空的
empFile.txt。 - \(2\):创建
empFile.txt并写入一行1 ZhangSan 1。
第二行一个整数 \(addFlag\)(\(addFlag \in \{0,1\}\))。若为 \(1\),表示初始化之后再添加一名职工,必须把 fileIsEmpty 改为 false。
输出格式
共三行,行末换行:
文件不存在或文件为空或文件有数据- 初始化后的人数(前两种为 \(0\);有数据时本题仍不统计人数,输出 \(0\))
- 最终的
fileIsEmpty(真输出1,假输出0)。若addFlag=1,这一行必须是0
样例
输入 #1
1
0
输出 #1
文件为空
0
1
输入 #2
2
1
输出 #2
文件有数据
0
0
说明
- 空文件检测必须用“读一个字符 +
eof()”,不要用文件是否存在来代替。 - 文件不存在、文件为空,初始化结果相同,但输出的第一行状态不同。
- 只要添加过职工,
fileIsEmpty就必须变成假,即使你还没把这个人写进文件。
信息
- ID
- 1156
- 难度
- 9
- 分类
- (无)
- 标签
- (无)
- 递交数
- 4
- 已通过
- 1
- 通过率
- 25%
- 上传者