永发信息网

C++,文件中某部分内容的修改!

答案:2  悬赏:0  手机版
解决时间 2021-04-13 20:14
#include
#include
#include

class Song
{
public:
struct Node
{
char name[10];

};
void add();
void display();
void modify();
void empty();
private:
Node song[10];
};

void Song::add()
{
ofstream wfile;
wfile.open("mysongs.txt",ios::out);
int i=0;
while(1)
{
cout<<"name:\n";
cin>>song[i].name;

wfile<
cout<<"add another?(y or n)\n";
char c;
cin>>c;
while(c!='y'&&c!='n')
{
cout<<"error!choose again:\n";
cin>>c;
}
if(c=='n') break;
i++;
}

wfile.close();

}

void Song :: display()
{
ifstream rfile;
rfile.open("mysongs.txt",ios:: in);
int i=0;

while((!rfile.eof()))
{
rfile>>song[i].name;

i++;
}

for(int j=0;jcout<<"name:\n"<rfile.close();
}

void Song::modify()
{
ifstream rfile;
rfile.open("mysongs.txt",ios::in);
char s[10],a[10];
int k,x=0,i=0;
cout<<"input the name you want to modify:\n";
cin>>s;
while((!rfile.eof()))
{
rfile>>song[i].name;
i++;
}
for(int j=0;j{
if(strcmp(s,song[j].name)==0)
{
cout<<"find and input new name:\n";
cin>>a;
cout<<"modified!\n";
k=j;
x=1;
break;
}
}
strcpy(a,song[k].name);
rfile.close();
ofstream fin("mysongs.txt",ios::out);
for(k=0;kfin<if(!x)
cout<<"no record!\n";
fin.close();
}

void main()
{
Song * p=new(Song);
p->add();
p->modify();
p->display();
cout<}

如题!该程序中,modify函数实现不了我想要的操作。。。
1.能不能在我这个代码的基础上进行修改?
2.能告诉我问题在哪吗?
3.文件读取的数据是存放在哪里的啊?之后怎么处理?我想了解下流程。。。

谢谢!
最佳答案
//你的代码很乱,帮你改好了,比之前好一些,但是还是乱,而且有一些潜在的bug,实现相同的功能我可以全部重写一个更加简洁高效无bug,如果你需要请新开一贴我写给你

#include
#include
#include

using namespace std;

class Song
{
public:
void add();
void display();
void modify();
void empty();
private:
string song[10];
};

void Song::add()
{
ofstream wfile;
wfile.open("mysongs.txt",ios::out);
int i=0;
char c;
while(1&&i!=10)
{
cout<<"name:"< cin>>song[i];
cout<<"add another?(y or n)"< cin>>c;
while(c!='y'&&c!='n')
{
cout<<"error!choose again:"< cin>>c;
}
wfile< if(c=='n') break;
wfile< i++;
}
wfile.close();
}

void Song :: display()
{
ifstream rfile;
rfile.open("mysongs.txt",ios:: in);
string s;
while(rfile.peek()!=EOF)
{
rfile>>s;
cout<<"name:"< cout< }
rfile.close();
}

void Song::modify()
{
fstream rwfile;
rwfile.open("mysongs.txt");
string s,a;
int len;
cout<<"input the name you want to modify:"< cin>>s;
while(rwfile.peek()!=EOF)
{
rwfile>>a;
len=s.size();
if(0==strcmp(a.c_str(),s.c_str()))
{
rwfile.seekg(-len,ios::cur);
cout<<"find and input new name:"< cin>>a;
a=a+" ";
rwfile p->modify();
p->display();
cout< }
全部回答
什么文件?txt还是二进制文件? 建议你可以全部读出,然后再写入。 如果文件太大,就建立一个新文件,然后从一个中向另一个拷贝
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
NBA里哪个球星篮球打的好?哪个球队最棒?
下列物质NH4Cl、N2、N2O、X、N2O3、NO2、KNO3
多少毫升水是一斤
怀孕了,胃为什么总是很痛?
有没有好看的日本动漫?
电信 网通 铁通 哪种宽带好
狗狗的生命有多长时间
CF的TENVF如何解决,远程送10QB
在呼吸过程的气体交换是什么样的?
一个黄色硬币后面是鼠的图案,前面有个鼠字,
划分段落符号,word中的段落标记和段落符号有
现金流量表 销售商品,提供劳务收到的现金为
上海哪里有卖一款叫白里透红牌子的化妆品?
求一个CS的生化危机2的地图包
单选题建国以来我国第一个获得科技特等发明奖
推荐资讯
家驹是怎么死的?
yy伽柏放的是时候表演真正的技术了是什么舞曲
有人相信梦是平行空间里的你正在经历的事情吗
鑫奥奥迪服务中心这个地址在什么地方,我要处
笔记本一开机就会黑屏是怎么回事?这2天2次开
求一篇以 失败不是成功之母 为题的200字左右
单选题昼夜更替的是时间是:A.一个太阳日——
我爱她,但她却爱他,可是他不是真的爱她,只
谁可以邀请我开通QQ游戏人生啊
解答题分析下面三个试验,据材料回答问题:实
分解因式:(1)2m2-16m+32(2)(a-b)2-4(
浙江这边有谁开网络店的吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?