关于C++中出现Debug Error!的问题,详情请看下面,各位高手帮帮忙!

错误:DebugError!program:C:\DocumentsandAdministrator\桌面\额\Debug\Cpp1.exeabnomalprogramt... 错误:
Debug Error!program:C:\Documents and Administrator\桌面\额\Debug\Cpp1.exe
abnomal program termination
(Press Retry to debug the application)
源代码:

#include<iostream.h>
#include<string>
#include<iomanip.h>
#include<fstream>

using namespace std;

struct course
{
char cNo[10];//课程号
char cName[20];//课程名
char cSchoolroom[20];//课室
char cTeacher[20];//任课教师
int cTime;//学时
int cCredit;//学分

};
struct Course
{
course curriculum;
Course *next;
Course(){next=NULL;}
};

class Subject
{
Course *head;//头指针
Course *p;//当前指针
public:
Subject(){head=NULL;p=NULL;}
void Add();//录入新课程信息
void Delete();//删除不开课程
int Search(char d[]);//根据课程号寻找课程,返回1或0
void Show();//打印所有课程
//void ReadFile();//从文件中读出数据信息
void WriteFile();//向文件中写入信息
//void SelectCourse();//选课
};

void Subject::Add()
{
cout<<"录入几门课程信息:";
int n;
cin>>n;
head=new Course;
head->next=NULL;
Course *s;
s=head;
for(int i=0;i<n;i++)
{
p=new Course;
cout<<"\t输入课程号:";
cin>>p->curriculum.cNo;
if(Search(p->curriculum.cNo)==0)
{
cout<<"\t输入课程名:";
cin>>p->curriculum.cName;
cout<<"\t输入课时:";
cin>>p->curriculum.cTime;
cout<<"\t输入任课老师:";
cin>>p->curriculum.cTeacher;
cout<<"\t输入授课教室:";
cin>>p->curriculum.cSchoolroom;
cout<<"\t输入课程学分:";
cin>>p->curriculum.cCredit;
}
else{cout<<"\n\t已经存在该课程,不能重复添加!";}
s->next=p;
s=p;
}
s->next=NULL;
}

int Subject::Search(char d[])
{Course *f=head->next;
while(f!=NULL)
{
if(strcmp(f->curriculum.cNo,d)==0)break;
f=f->next;
}
if(f==NULL)
return 0;
else return 1;
}

void Subject::Delete()
{char t[10];
Course *q1=head->next;
Course *q2=q1->next;
cout<<"\t请问要删除课程号:";
cin>>t;
int n=0;
Course *s=head->next;
while(s!=NULL)
{
n++;
if(strcmp(s->curriculum.cNo,t))break;
s=s->next;
}
if(s==NULL)
cout<<"不存在该课程号!"<<endl;
else
for(int i=1;i<n-1;i++)
{
q1=q2;
q2=q2->next;
}
q1->next=q2->next;
cout<<"\t删除成功!"<<endl;
}

void Subject::Show()
{
Course* k=head->next;
while(k!=NULL)
{
cout<<setiosflags(ios::left)<<setw(10)<<k->curriculum.cNo
<<setw(35)<<k->curriculum.cName
<<setw(15)<<k->curriculum.cTeacher
<<setw(10)<<k->curriculum.cSchoolroom
<<setw(7)<<k->curriculum.cTime
<<setw(6)<<k->curriculum.cCredit<<endl;
k=k->next;
}

}

void Subject::WriteFile()
{
ofstream out;
Course *c=head->next;
out.open("e:\\课程信息表.txt",ios::binary|ios::app|ios::trunc);
if(!out)
{
cout<<"\t课程信息表.txt无法打开!";
abort();
}
else
while(c)
{
out.write((char*)&c,sizeof(c));
c=c->next;
}
out.close();
}
void main()
{

Subject subject;
subject.Add();
subject.Delete();

subject.Show();
subject.WriteFile();
}
展开
 我来答
M_SunQi
推荐于2016-05-09 · TA获得超过165个赞
知道小有建树答主
回答量:82
采纳率:0%
帮助的人:109万
展开全部
1、struct course
{
char cNo[10];//课程号
char cName[20];//课程名
char cSchoolroom[20];//课室
char cTeacher[20];//任课教师
int cTime;//学时
int cCredit;//学分

};
成员没有初始化,容易造成访问越界;
建议在构造函数中对内存进行置零;

2、
Add函数中的head指向的首结点没有被使用;

3、你的cin没有验证输入数据的正确性;
更多追问追答
追问
问题应该出在函数WriterFile(),是写了个检验程序验证它时才出的错,其它运行无错,能帮满改下吗?
追答
ios::app|ios::trunc两个属性不能共存……
百度网友72498a1
2011-08-16 · 超过15用户采纳过TA的回答
知道答主
回答量:229
采纳率:0%
帮助的人:121万
展开全部
我是按下面来的、 1、用winrar解压镜像文件到非7、出现“开始安装界面”,(要注意了,不点击“高手赐教、、 不用这么麻烦,装个虚拟光驱,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王者之班
2011-08-16 · 超过14用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:30.4万
展开全部
你把Debug文件夹删了再重新运行一下看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式