以下程序企图把从键盘终端输入的字符输出到名为abc.txt的文件中,当从终端读到字符’#’时,结束输入和输出操作。但该程序有错。 #include <iostream> #include <fstream> using namespace std; int main() {ofstream ofile; char ch;ofile.open("d:\\abc.txt", ’W’);do{ cin>>ch; ofile.put(ch);}while(ch!=’#’);ofile.close();return 0; } 程序出错的原因是( )。
A.成员函数open调用形式错误
B.输入文件没有关闭
C.成员函数put调用形式错误
D.对象ofile定义错误
参考答案:A
解析: 本题考核文件的打开。C++中,可以在定义文件流对象的同时打开文件,也可以在定义文件流对象以后用open()函数打开文件。可以通过构造函数或open函数的第2个参数,确定文件的打开模式。打开模式用下列常量表示: ios_base::app 为添加数据而打开(总是在文件尾部写); ios_ase::binary 作为二进制文件打开: ios_ase::in 为输入而打开: ios_ase::out 为输出而打开; ios_base::tmnc 若文件存在,截为空文件; ios_base::ate 打开时定位于文件尾。 题中成员函数open()的第2个实参不符合C++的打开模式,所以产生调用错误。