|
你用的是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;
} |
|