HM157 空档案判定

HM157 空档案判定

HM157 空档案判定

来源: 第 157 集 职工管理系统-文件交互-读文件2-文件为空

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

档案有三种启动状态。上一题处理了“文件未创建”。本题处理第二种:**文件已经存在,但一行数据都没有**(用户执行过清空,磁盘上只剩空文件)。

判断“存在且为空”的方法是:用已经打开的 ifstream>> 读走一个字符。空文件里实际上只剩文件尾标记,这个字符被读走后,再调用 eof():为真就说明读到头了,文件为空。这是一个新接口。

文件为空时的初始化与文件不存在完全相同:人数 \(=0\),数组指针为空,fileIsEmpty = true,然后 closereturn。两种情况都把标志置真;什么时候改成假?每成功添加一名职工,就必须把 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

输出格式

共三行,行末换行:

  1. 文件不存在文件为空文件有数据
  2. 初始化后的人数(前两种为 \(0\);有数据时本题仍不统计人数,输出 \(0\))
  3. 最终的 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%
上传者