跪求C语言高手,帮忙分析哈这个程序为什么调试没错误,一运行就有一个错误,无法运行?急用!谢谢啊!

#include "stdio.h"//本程序用到了,MFC类,所以设置下工程-设置-使用MFC类作为共享的dll
#include "fstream.h"
#include <afx.h>
struct NamePass{
CString name;
CString passward;
NamePass* next;
};
BOOL ReadTxt(NamePass** now,char* filename)//用户名 密码中加要有空格。
{
fstream f;
f.open(filename,ios::in);
if(f.fail())return FALSE;
char name[50],passward[50];
CString t;
while(!f.eof())
{
NamePass* temp=new NamePass();
f>>name>>passward;
temp->name=name;
temp->passward=passward;
(*now)->next=temp;
(*now)=temp;
}
f.close();
return TRUE;
}
BOOL CheckNamePass(NamePass* head,CString name,CString password)
{
NamePass* temp=head;
while(temp->next!=NULL)
{
temp=temp->next;
if(temp->name==name && temp->passward==password)
{
return TRUE;
}
}
return FALSE;
}
struct TimeRecord{
CString name;
CTime btime;
CTime etime;
TimeRecord* next;
};
TimeRecord* WriteTime(TimeRecord* Head,TimeRecord* tail,CString name,int state)
{
if(state==0)
{
TimeRecord* temp=new TimeRecord();
temp->name=name;
temp->btime=CTime::GetCurrentTime();
tail->next=temp;
return temp;
}
TimeRecord* temp=Head;
TimeRecord* temp1=NULL;
while(temp->next!=NULL)
{
temp1=temp;
temp=temp->next;
if(temp->name==name)
{
temp1->next=temp->next;
return temp;
}
}
return NULL;
}
void WriteTxt(CString filename,TimeRecord* tr)
{
ofstream f;
f.open(filename,ios::ate|ios::out);
//f.seekp(0,ios::end);
tr->etime=CTime::GetCurrentTime();
CString b=tr->btime.Format("'%Y-%m-%d %H:%M:%S'"),e=tr->etime.Format("'%Y-%m-%d %H:%M:%S'");
f<<"用户名:"<<(tr->name)<<" 登陆时间"<<b<<" 注销时间"<<e<<"\n";
f.close();
}
TimeRecord* THead=new TimeRecord();
TimeRecord* TTail=THead;
NamePass* Head=new NamePass();
NamePass* Tail=Head;
void main()
{
ReadTxt(&Tail,"1.txt");
int a=-1;
while(a)
{
printf("输入操作类型 1-登陆,2-注销,0退出\n");
scanf("%d",&a);
switch(a)
{
case 1:{
printf("输入用户名和密码,中间以空格分隔,,,,,,,注意用户名和密码不能含有特殊字符\n");
char name[50],passward[50];
scanf("%s%s",name,passward);
if(CheckNamePass(Head,name,passward))
{
printf("登陆成功!\n");
WriteTime(THead,TTail,name,0);
}
break;
}
case 2:{
printf("输入要注销的用户名\n");
char name[50];
scanf("%s",name);
TimeRecord* temp=WriteTime(THead,TTail,name,1);
if(temp==NULL)printf("用户不在线!\n");
else
{
printf("注销成功!\n");
WriteTxt("2.txt",temp);
}
}
}
}
}

把你的错误,截个图发上来。才好分析。
大概看了一下,你new一个对象,后面带括号干啥,你先把()去掉在编译下看看。
编译只是语法检查通过了,但是语义检查不一定就检查的出来。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-26
执行文件目录没有dll库文件?追问

没有啊, 以前出现这问题时,我们老师叫我们从新打开C++,叫我们从新复制过克,就可以了,但这个不行啊!帮帮忙嘛!

第2个回答  2012-07-26
什么错误,贴出来看看呀,是编译错误,还是执行错误呀
相似回答