[求助]大家来找错误(一个文件留言类)
文件不能读和写,什么原因?/*题目说明:程序第一次运行时,建立一个名为C:\msg.ini文件,
把用户输入的信息存入该文件;以后每次运行时,都先读取该
文件的内容并显示给用户,用户输入新的信息并保存,显示的
信息可以是最新的,也可以是所有的*/
#include<iostream.h>
#include<fstream.h>
#include<string.h>
class mailman{
public:
bool havemsg; //是否有信息的标记
void outmsg(); //显示用户输入的信息
void inmsg(); //接受用户信息
readmsg(); //从文件中读取信息
savemsg(); //向文件中保存信息
mailman();
//virtual mailman(){}
private:
char ch[1024];
fstream fs;
};
mailman::mailman()
{
fs.open("c:\msg.ini",ios::nocreate); //测试是否存在msg.ini文件
if(!fs)
{
havemsg=false;
fs.open("c:\msg.ini",ios::app); //如文件不存在则新建
if(!fs)
{
cout<<"建立文件失败!\n";
}
}
int i;
do{
do{
cout<<'\t'<<"1.写入留言\n";
cout<<'\t'<<"2.查看留言\n";
cout<<'\t'<<"3.退出\n";
cin>>i;
}while(i>3||i<1);
switch(i)
{
case 1: inmsg();break;
case 2: readmsg();break;
case 3: break;
}
}while(i!=3);
}
void mailman::inmsg()
{
cout<<"请输入留言:";
cin>>ch;
havemsg=true;
savemsg();
}
mailman::savemsg()
{
fs.open("c:\msg.ini",ios::app);
if(!fs)
{
cout<<"保存文件失败!\n";
return 1;
}
fs.write(ch,strlen(ch));
fs.close();
}
mailman::readmsg()
{
if(havemsg==true)
{
int i;
cout<<'\t'<<"1.最新留言\n";
cout<<'\t'<<"2.全部留言\n";
cin>>i;
fs.open("c:\msg.ini",ios::in);
if(i==1)
{
fs.seekg(-strlen(ch),ios::end);
outmsg();
}
else
outmsg();
fs.close();
}
else
cout<<'\t'<<"没有留言\n";
}
void mailman::outmsg()
{
char c;
while(fs.get(c))
cout<<c;
cout<<endl;
}
main()
{
mailman aa;
return 0;
}