免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1618 | 回复: 4
打印 上一主题 下一主题

段错误问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-03-04 16:37 |只看该作者 |倒序浏览

  1. #include <fstream>;
  2. #include<stdlib.h>;
  3. #include <iostream>;
  4. using namespace std;
  5. float get_fits_exposuretime (char *file)
  6. {
  7.         char *ch=new char [4101];
  8.         char *timeask= new char [22];
  9.         char *temp= new char [22];
  10.         float time;

  11.         ifstream fin(file);
  12.         fin.seekg(0);
  13.         fin.read(ch,4100);
  14.         timeask=strstr(ch,"EXPOSURE")+9;
  15.         delete [] ch;
  16.         *(timeask+22)='\0';
  17.         temp=strstr(timeask,"'");
  18.         if(temp==NULL)
  19.         {
  20.                 time=atof(timeask);
  21.         }
  22.         else
  23.         {
  24.                 timeask=temp+1;
  25.                 temp=strstr(timeask,"'");
  26.                 *(temp)='\0';
  27.                 time=atof(timeask);
  28.         }
  29.         fin.close();
  30. //      delete [] timeask;
  31. //      delete [] temp;
  32.         return time;
  33. }
  34. int main ()
  35. {
  36.         char file[20];
  37.         float time;
  38.         cout << "enter fits file name:";
  39.         cin >;>; file;
  40.         time=get_fits_exposuretime(file);
  41.         cout<<time<<endl;
  42. }
复制代码

(该程序用于从一个文件中读字符串,然后转成float类型)

为什么我把上面注释掉的两行放开就回出现段错误的问题,而注释掉就没有问题?

论坛徽章:
0
2 [报告]
发表于 2005-03-04 17:03 |只看该作者

段错误问题

char *timeask= new char [22];

*(timeask+22)='\0'; // 出界!

论坛徽章:
0
3 [报告]
发表于 2005-03-04 17:46 |只看该作者

段错误问题

谢谢指点
不过不是这个原因,改过之后问题依然存在

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2005-03-04 18:00 |只看该作者

段错误问题

和delete没关系,你程序处理有问题.
如:    timeask=strstr(ch,"EXPOSURE"+9;
只是指针指向它而矣,并没有复制字符过来.等等下面还有一些问题,自己先看.
当然还和你要读的文件里的内容格式有关.

论坛徽章:
0
5 [报告]
发表于 2005-03-04 18:30 |只看该作者

段错误问题

原帖由 "THEBEST" 发表:
和delete没关系,你程序处理有问题.
如:    timeask=strstr(ch,"EXPOSURE"+9;
只是指针指向它而矣,并没有复制字符过来.等等下面还有一些问题,自己先看.
当然还和你要读的文件里的内容格式有关.


谢谢谢谢,就是兄弟所指出的问题,太感谢了
遗憾的是改了之后最后一个还是有一样的问题
大概知道问题了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP