求助,ofstream出错

问题描述

这样的一段代码char*CreateFilename(constchar*wFilePath,UNITSTRUCTUREUnit){char*FileName=(char*)malloc(strlen(wFilePath)*sizeof(char));strcpy(FileName,wFilePath);char_filename[256]="";if(Unit.bInBoundArea){strcat(_filename,"inside\");}else{strcat(_filename,"outside\");}if(Unit.bCatalysis)strcat(_filename,"C");//char*temp=(char*)malloc(256*sizeof(char));chartemp[20];_itoa(Unit.nYear,temp,10);strcat(_filename,temp);//_itoa(Unit.nMonth,temp,2);if(Unit.nMonth<10){_itoa(Unit.nMonth,temp,10);strcat(_filename,"0");strcat(_filename,temp);}else{_itoa(Unit.nMonth,temp,10);strcat(_filename,temp);}if(Unit.nDay<10){_itoa(Unit.nDay,temp,10);strcat(_filename,"0");strcat(_filename,temp);}else{_itoa(Unit.nDay,temp,10);strcat(_filename,temp);}if(Unit.nHour<10){_itoa(Unit.nHour,temp,10);strcat(_filename,"0");strcat(_filename,temp);}else{_itoa(Unit.nHour,temp,10);strcat(_filename,temp);}if(Unit.nMinute<10){_itoa(Unit.nMinute,temp,10);strcat(_filename,"0");strcat(_filename,temp);}else{_itoa(Unit.nMinute,temp,10);strcat(_filename,temp);}strcat(_filename,"_");if(Unit.UnitNumber<10){_itoa(Unit.UnitNumber,temp,10);strcat(_filename,"0");strcat(_filename,temp);}else{_itoa(Unit.UnitNumber,temp,10);strcat(_filename,temp);}strcat(_filename,".txt");strcat(FileName,_filename);returnFileName;}intmain(intargc,char*argv[]){UNITSTRUCTUREUnit;Unit.nYear=2007;Unit.nMonth=7;Unit.nDay=10;Unit.nHour=5;Unit.nMinute=10;Unit.UnitNumber=0;Unit.CenterX=10;Unit.CenterY=10;Unit.EchoArea=20;UNITSTRUCTURE*FirstUnits=&Unit;intasize=1;for(inti=0;i!=asize;i++){char*FileName=CreateFilename("d:\result\",FirstUnits[i]);ofstream_ofs;_ofs.open(FileName);floatLAT,LON;_ofs<<FirstUnits[i].nYear<<endl;_ofs.close();}deleteFileName;return0;}红色出错位置,TRECOP.exe中的0x7c812a6b处未处理的异常:MicrosoftC++异常:内存位置0x0012fc94处的std::bad_alloc是不是我CreateFileName这个函数有问题?UNITSTRUCTURE是我自己定义的结构体

解决方案

解决方案二:
求高手解决啊
解决方案三:
如果去掉char*FileName=CreateFilename("d:\result\",FirstUnits[i]);运行就正常,求高手啊。
解决方案四:
可以确定是CreateFilename函数问题,我去掉了其中生成的语句,让FileName变的短一点,就运行成功,这个问题是在什么地方啊?大牛都没起床吗?求教啊!
解决方案五:
引用3楼msdnsyh的回复:

可以确定是CreateFilename函数问题,我去掉了其中生成的语句,让FileName变的短一点,就运行成功,这个问题是在什么地方啊?大牛都没起床吗?求教啊!

你在CreateFilename函数里面设断点调试一下就知道问题在哪了
解决方案六:
引用4楼q342210738的回复:

引用3楼msdnsyh的回复:可以确定是CreateFilename函数问题,我去掉了其中生成的语句,让FileName变的短一点,就运行成功,这个问题是在什么地方啊?大牛都没起床吗?求教啊!你在CreateFilename函数里面设断点调试一下就知道问题在哪了

你看我这个函数写的对不对?
解决方案七:
引用5楼msdnsyh的回复:

引用4楼q342210738的回复:引用3楼msdnsyh的回复:可以确定是CreateFilename函数问题,我去掉了其中生成的语句,让FileName变的短一点,就运行成功,这个问题是在什么地方啊?大牛都没起床吗?求教啊!你在CreateFilename函数里面设断点调试一下就知道问题在哪了你看我这个函数写的对不对?

先告诉你我发现的三个问题:1、inta=strlen(wFilePath)

得到得到的a永远=4,跟你的wFilePath取值无关,这是指针的原理2、没有这种用malloc分配内存,在后面用delete清理内存的用法3、UNITSTRUCTUREUnit;Unit.nYear=2007;Unit.nMonth=7;Unit.nDay=10;Unit.nHour=5;Unit.nMinute=10;Unit.UnitNumber=0;Unit.CenterX=10;Unit.CenterY=10;Unit.EchoArea=20

这几句没必要这样写,你可以为结构体写一个构造函数,然后写成UNITSTRUCTUREUnit(2007,7,10,5...)

的方式
解决方案八:
引用5楼msdnsyh的回复:

引用4楼q342210738的回复:引用3楼msdnsyh的回复:可以确定是CreateFilename函数问题,我去掉了其中生成的语句,让FileName变的短一点,就运行成功,这个问题是在什么地方啊?大牛都没起床吗?求教啊!你在CreateFilename函数里面设断点调试一下就知道问题在哪了你看我这个函数写的对不对?

你没有把UNITSTRUCTURE的定义写出来,我无法帮你调试
解决方案九:
typedefstructunitstructure{intUnitNumber;intCenterX;intCenterY;intnYear;intnMonth;intnDay;intnHour;intnMinute;boolbCatalysis;boolbContrastive;boolbInBoundArea;floatRI;shortMaxAreaEcho;floatEchoArea;floatET;shortMaxVolumeEcho;shortMaxEchoHeight;}UNITSTRUCTURE;这个是结构体malloc我已经改了
解决方案十:
帮你改完了,可以运行了~~不过这一句ofstream_ofs;

可能会使你打开文件不成功,注意open的参数#include"stdafx.h"#include<stdlib.h>#include<fstream>usingnamespacestd;typedefstructunitstructure{intUnitNumber;intCenterX;intCenterY;intnYear;intnMonth;intnDay;intnHour;intnMinute;boolbCatalysis;boolbContrastive;boolbInBoundArea;floatRI;shortMaxAreaEcho;floatEchoArea;floatET;shortMaxVolumeEcho;shortMaxEchoHeight;}UNITSTRUCTURE;char*CreateFilename(constchar*wFilePath,UNITSTRUCTUREUnit){char_filename[256]="";if(Unit.bInBoundArea){strcat(_filename,"inside\");}else{strcat(_filename,"outside\");}if(Unit.bCatalysis)strcat(_filename,"C");//char*temp=(char*)malloc(256*sizeof(char));chartemp[20];_itoa(Unit.nYear,temp,10);strcat(_filename,temp);//_itoa(Unit.nMonth,temp,2);if(Unit.nMonth<10){_itoa(Unit.nMonth,temp,10);strcat(_filename,"0");strcat(_filename,temp);}else{_itoa(Unit.nMonth,temp,10);strcat(_filename,temp);}if(Unit.nDay<10){_itoa(Unit.nDay,temp,10);strcat(_filename,"0");strcat(_filename,temp);}else{_itoa(Unit.nDay,temp,10);strcat(_filename,temp);}if(Unit.nHour<10){_itoa(Unit.nHour,temp,10);strcat(_filename,"0");strcat(_filename,temp);}else{_itoa(Unit.nHour,temp,10);strcat(_filename,temp);}if(Unit.nMinute<10){_itoa(Unit.nMinute,temp,10);strcat(_filename,"0");strcat(_filename,temp);}else{_itoa(Unit.nMinute,temp,10);strcat(_filename,temp);}strcat(_filename,"_");if(Unit.UnitNumber<10){_itoa(Unit.UnitNumber,temp,10);strcat(_filename,"0");strcat(_filename,temp);}else{_itoa(Unit.UnitNumber,temp,10);strcat(_filename,temp);}strcat(_filename,".txt");size_tbuf_size=strlen(wFilePath)*sizeof(char)+strlen(_filename)*sizeof(char)+1;char*FileName=newchar[buf_size];strcpy(FileName,wFilePath);strcat(FileName,_filename);returnFileName;}intmain(intargc,char*argv[]){UNITSTRUCTUREUnit;Unit.nYear=2007;Unit.nMonth=7;Unit.nDay=10;Unit.nHour=5;Unit.nMinute=10;Unit.UnitNumber=0;Unit.CenterX=10;Unit.CenterY=10;Unit.EchoArea=20;UNITSTRUCTURE*FirstUnits=&Unit;intasize=1;for(inti=0;i!=asize;i++){char*FileName=CreateFilename("d:\result\",FirstUnits[i]);ofstream_ofs;_ofs.open(FileName);floatLAT,LON;_ofs<<FirstUnits[i].nYear<<endl;_ofs.close();delete[]FileName;}return0;}

解决方案十一:
constcharfilename[]="RuntimeMonitor.txt";ofstreamo_file;//写o_file.open(filename,ios_base::app);
解决方案十二:
C++那些变量搞死人,到底是人开发程序,还是程序开发人
解决方案十三:
好久没看了,自己搞定的,散分!

时间: 2024-09-10 02:31:20

求助,ofstream出错的相关文章

ado-VC++操作Access数据库的查询语句出错,求助

问题描述 VC++操作Access数据库的查询语句出错,求助 刚学着用VC++操作Acess2003数据库,在对话框里添加一个列表控件,然后把存到数据库里的内容在列表控件中显示,用编辑框向数据库添加内容,基本是照着书上写的做,除了名字改了其它程序都没动.现在向数据库添加内容没有问题,可以正常的存进去.但是想用查询语句SELECT * FROM CKdataInfo把数据库里的内容显示出来就出错了,具体程序如下 void Cdb003Dlg::FreshList() { try { //查询数据库

c++基础-新人求助!记录程序时间出错

问题描述 新人求助!记录程序时间出错 #include #include #include #include"sort.h" using namespace std; int main() { int choice, n, i, j; DWORD start, end; while(1) { cout << "输入数据的方式:" << endl; cout << "1.手动输入" << endl;

c++-编译通过了,但是却运行出错是为啥....C++新手通宵第一晚求助

问题描述 编译通过了,但是却运行出错是为啥....C++新手通宵第一晚求助 #include using namespace std; struct Node { int E; double C; Node next; }; int length(Node a) { int i=0; Node* p=a->next; while(p) { i++; p=p->next; } return i; } void kingofjdashen(Node* a,Node* b) { int c[100]

代码-linux的xterm开启的终端里使用原始套接字发送数据包出错,求助

问题描述 linux的xterm开启的终端里使用原始套接字发送数据包出错,求助 xterm下原始套接字可以接收数据包,但是发送数据包时出错,怎么解决? 错误是[error 101]network is unreachable. 代码如下: proto = socket.getprotobyname('tcp') # only tcp sock = socket.socket( socket.AF_INET, socket.SOCK_RAW, proto ) packet_base = sock.

MyEclipse 异常求助,一直出错,我也看不懂,求大神

问题描述 MyEclipse 异常求助,一直出错,我也看不懂,求大神 解决方案 这不就是你的UserDaoImpl类没找到吗?看看userDao的定义吧 解决方案二: 很明显这个类没有加载,可能是类的class文件没有发布过去.试试先点击菜单里面的项目.-clean一下重新编译,然后再点击Tomcat的clean重新发布项目. 解决方案三: classNotFound,,类没有找到,,把这个加进去就好了

c语言-俄罗斯方块C语言 12列改为10列后出错,新人求助!

问题描述 俄罗斯方块C语言 12列改为10列后出错,新人求助! #include #include #include #include #include #include #ifdef _MSC_VER // M$的编译器要给予特殊照顾 #if _MSC_VER <= 1200 // VC6及以下版本 #error 你是不是还在用VC6?! #else // VC6以上版本 #if _MSC_VER >= 1600 // 据说VC10及以上版本有stdint.h了 #include #else

path-【小白求助】安卓定位系统出错

问题描述 [小白求助]安卓定位系统出错 02-23 17:08:02.654: E/AndroidRuntime(11139): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.baidu.mapapi.MapView" on path: DexPathList[[zip file "/mnt/asec/com.zk.baidumaptest-2/pkg.apk"],native

tomcat-TOMCAT运行时出错~求助

问题描述 TOMCAT运行时出错~求助 解决方案 http://www.cnblogs.com/jifeng/archive/2011/08/07/2129988.html 你问的这个东西,应该不是每个人都用过,所以不清楚,而且你贴的图里,只有管理mysql 的报错,没有关于你说的这个配置文件的错误显示 解决方案二: 你好,由于你的tomcat下缺少mysql驱动包导致的. 解决方案三: 楼上正解,没有mysql驱动,项目中加入mysql 驱动的jar 解决方案四: 楼上正解,没有mysql驱动

sqlserver-新手求助!批量插入时去除文本限定符 replace处出错,弄了一整天弄不出来

问题描述 新手求助!批量插入时去除文本限定符 replace处出错,弄了一整天弄不出来 exec ('insert into xxdd (aa,bb,cc,dd,ee,ff) select replace(aa,'"',''),replace(bb,'"',''),replace(cc,'"',''),replace(dd,'"',''),replace(ee,'"',''),replace(ff,'"','') from openrowset(