设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 264|回复: 6
打印 上一主题 下一主题

[求助]大家来找错误(一个文件留言类)

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-3 01:56:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
文件不能读和写,什么原因?

/*题目说明:程序第一次运行时,建立一个名为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;
}
2#
发表于 2009-11-3 01:56:05 | 只看该作者
哪位大哥顶一下
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-3 01:56:06 | 只看该作者
为什么我用nocreate时说不是std::ios的member呢?
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-3 01:56:07 | 只看该作者
还有那个noreplace也是,总用不了
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-3 01:56:09 | 只看该作者
你用的是vc6.0么?我也遇到这种问题,但不知道怎么解决
#include<iostream.h>
#include<fstream.h>
#include<string.h>

#include<iostream>
#include<fstream>
#include<string>
using namespace std;
也会出现类似的问题

我又改进了一下,但不能查看最新信息,哪个大哥再顶一下
#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<stdio.h>
//using namespace std;
class mailman{
public:
bool havemsg; //是否有信息的标记
void outmsg(); //显示用户输入的信息
void inmsg(); //接受用户信息
void readmsg(); //从文件中读取信息
bool savemsg(); //向文件中保存信息
void sh(); //插入表情
mailman();
private:
char ch[1024];
char name[24];
char str[1000];
fstream fs;
};

mailman::mailman()
{
fs.open("c:\\msg.ini", ios::in);//测试是否存在msg.ini文件
if(!fs.is_open())
{
havemsg=false;
fs.open("c:\\msg.ini",ios::app); //如文件不存在则新建
if(!fs.is_open())
{
cout<<"建立文件失败!\n";

}
}
else
{
char a[10]={0}; //是否有信息
fs.read(a,3);
if(strlen(a)>1)
havemsg=true;
}
fs.close();
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>>name;
strcpy(ch,name);
char h[2]=":";
strcat(ch,h);
cout<<"请输入留言:";
cin>>str; //输入空格程序崩溃,用gets(ch)程序语句混乱
sh();
strcat(ch,str);
cout<<endl;
cout<<ch;
cout<<endl;
havemsg=true;
savemsg();
}

void mailman::sh()
{
cout<<"插入表情(y/n)";
char k;
cin>>k;
if(k=='y'||k=='Y')
{
char a[10];
for(int i=1,int j=14;i<7;i++)
a[i]=i;
for(;j<18;i++,j++)
a[i]=j;
for(int x=0;x<10;x++)
cout<<(x+1)<<"."<<a[x]<<" ";
cout<<endl<<"请选择:";

cin>>i;
char aa[2];
aa[0]=a[i],aa[1]='\0';
strcat(ch,aa);
}
}

bool mailman::savemsg()
{
fs.open("c:\\msg.ini", ios::app);
if(!fs.is_open())
{
cout<<"保存文件失败!\n";
return false;
}
fs.write(ch, strlen(ch));
fs<<" "<<strlen(ch);
fs<<endl;
fs.close();

}

void mailman::readmsg()
{
if(havemsg==true)
{
int i;
cout<<'\t'<<"1.最新留言\n";
cout<<'\t'<<"2.全部留言\n";
cin>>i;
fs.open("c:\\msg.ini",ios::in);
fs.seekg(0,ios::beg);
if(i==1)
{
fs.seekg(-1,ios::end);
int a;
fs>>a;
cout<<a; //查找最新信息的位置指针,但fs.seekg(-(a+5),ios::end);不执行
fs.seekg(-(a+5),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;
}
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-3 01:56:10 | 只看该作者
没时间看这,不过帮你顶下
回复 支持 反对

使用道具 举报

7#
发表于 2009-11-3 01:56:11 | 只看该作者
不懂这个 不过顶下先
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 01:49 , Processed in 0.106201 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表