有一组txt文件需要读取,数据按照分隔符存放以下各tmpxxx有int类型和float类型
fscanf(fp,"%d%f%f%f%d%d%f",&tmpgaodu,&tmpfengxiang,&tmpsudu1,&tmpsudu2,&tmpweizhi1,&tmpweizhi2,&tmpweizhi3);
fHeight[i*line+k]=tmpgaodu;
fDir[i*line+k]=tmpfengxiang;
fVHoriz[i*line+k]=tmpsudu1;
……
这么读取是没问题,可是碰到不完整的数据就会出错
04680 225.5 027.8 0000.7 100 100 1.7e-014
04800 226.3 028.2 0000.7 100 100 7.9e-015
04920 227.1 028.4 0000.8 100 100 3.5e-015
05040 ///// ///// ////// 000 000 ////////
05160 ///// ///// ////// 000 000 ////////想要把////的值都归为0,把tmpxxx设为CString,再通过atof转换,fscanf语句却出错,错在哪里
fscanf(fp,"%s%s%s%s%s%s%s",tmpgaoduc,tmpfengxiangc,tmpsudu1c,tmpsudu2c,tmpweizhi1c,tmpweizhi2c,tmpweizhi3c);
tmpgaodu=atof(tmpgaoduc);
tmpfengxiang=atof(tmpfengxiangc);
tmpsudu1=atof(tmpsudu1c);
fscanf(fp,"%d%f%f%f%d%d%f",&tmpgaodu,&tmpfengxiang,&tmpsudu1,&tmpsudu2,&tmpweizhi1,&tmpweizhi2,&tmpweizhi3);
fHeight[i*line+k]=tmpgaodu;
fDir[i*line+k]=tmpfengxiang;
fVHoriz[i*line+k]=tmpsudu1;
……
这么读取是没问题,可是碰到不完整的数据就会出错
04680 225.5 027.8 0000.7 100 100 1.7e-014
04800 226.3 028.2 0000.7 100 100 7.9e-015
04920 227.1 028.4 0000.8 100 100 3.5e-015
05040 ///// ///// ////// 000 000 ////////
05160 ///// ///// ////// 000 000 ////////想要把////的值都归为0,把tmpxxx设为CString,再通过atof转换,fscanf语句却出错,错在哪里
fscanf(fp,"%s%s%s%s%s%s%s",tmpgaoduc,tmpfengxiangc,tmpsudu1c,tmpsudu2c,tmpweizhi1c,tmpweizhi2c,tmpweizhi3c);
tmpgaodu=atof(tmpgaoduc);
tmpfengxiang=atof(tmpfengxiangc);
tmpsudu1=atof(tmpsudu1c);
解决方案 »
- 在用InstallShield是自动对空间mscomm控件进行注册在卸载的时候我不想卸载该注册信息怎么办呢!
- 求助关于对话框状态栏的
- 关于http下载的问题
- 在线等待......对话框和单文档
- 一个update语句的问题。
- 如何用另一个身份执行程序?(如何让程序自己登录)
- 求问BCGControlBar工具栏添加动态更新的问题
- @_@````兄弟们!!有在WIN2K下用VC6搞开发OR学习的吗?
- 求教保护模式下对显卡操作的代码,原理,或者到哪里去找。。
- How to enumerate all file on my computer with WINAPI?
- vfw 双摄像头设置问题。
- 跪求指导关于debug assertion failed in occmgr.cpp与datagrid控件的问题
======
出错是肯定的,因为fscanf根本就不认CString的参数啊。
==============
N个文件?不用啊,只读一个文件,不过是将一行的字符放到一个CString变量中而已,分解要麻烦一点。
加空格
你一次性读N个文件不得一个一个打开吗,只是读取的时候用整行整行的读。
可以写一个函数来处理。
fscanf(fp,"%[^ ]%*c%[^ ]%*c%[^ ]%*c%[^ ]%*c%[^ ]%*c%[^ ]%*c%[^\n]",tmpgaoduc,tmpfengxiangc,tmpsudu1c,tmpsudu2c,tmpweizhi1c,tmpweizhi2c,tmpweizhi3c);
编译通过,运行起来却报内存不能为written的错把tmpxxxx类型设为CString型的
fscanf(fp,"%s%s%s%s%s%s%s",tmpgaoduc,tmpfengxiangc,tmpsudu1c,tmpsudu2c,tmpweizhi1c,tmpweizhi2c,tmpweizhi3c);
编译通过,但是读取的数据是不对的有没有朋友能详细的说一下啊