选择题   以下程序企图把从键盘终端输入的字符输出到名为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
【答案解析】本题考核文件的打开。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++的打开模式,所以产生调用错误。