调试的时候没有报错,运行之后报错

mesison 2007-01-31 12:30:50
我怀疑是文件函数的问题。调试的时候没有提示错误,程序可以运行到最后,但是最后VC会弹出错误对话框。提示 Debug Assertion Failed! 请问可能是什么原因造成的??

#include <iostream.h>
#include <stdio.h>
#include <string.h>

int main()
{
char *s = new char;
char *name = new char;
int count;
FILE *fp;

cout<<"please input your name"<<endl;
cin>>name;
count = strlen(name);
cout<<count<<endl;
cout<<name;
cout<<endl<<"please input your name again"<<endl;
gets(s);
fp = fopen("name", "w+");
if (!fp)
{
cerr<<"error"<<endl;
}
fwrite(s, 20, 1, fp);
fclose(fp);

fp = fopen("name", "r");
if (!fp)
{
cerr<<"the file you want to open is not exist"<<endl;
}
fread(name, 20, 1, fp);
fclose(fp);

*(name+21) = '\0';
cout<<name<<endl;
cout<<"is it OK?"<<endl;

}
...全文
234 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iu_81 2007-01-31
  • 打赏
  • 举报
回复
没有问题,你是不是什么地方弄错了
pkrobbie 2007-01-31
  • 打赏
  • 举报
回复
char *s = new char;
char *name = new char;
->
char *s = new char[1024];
char *name = new char[1024];

s和name的空间太小了。
mesison 2007-01-31
  • 打赏
  • 举报
回复
谢谢各位,确实是字符指针变量分配内存出错的问题。按照一楼的方法改正之后程序运行正常。
lidongri 2007-01-31
  • 打赏
  • 举报
回复
同意pkrobbie(pkrobbie) ( ) 信誉:100 Blog 的
你只分配了1个char单元
而程序使用了N个
所以造成错误

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧