在C ++中读取前缀

时间:2015-11-07 01:43:29

标签: c++ readfile fgets strtok

我正在编写一个程序,该程序读取包含我的数据的文本文件以及测量单位,例如:

8.9837 ns    ,  8.9826 ns    ,  8.8998 ns    ,  9.0433 ns    ,  143.5 ps 
13.037 ns    ,  13.027 ns    ,  12.983 ns    ,  13.075 ns    ,  91.1  ps 
-16.18 mV    , -17.842 mV    , -39.78  mV    , -9.44   mV    ,  30.34 mV

我使用fgets读取每一行,然后strtok删除空格和逗号。当我尝试实现一个简单的函数转换我的测量单位的前缀时,我的问题出现了。该函数接收char*并返回double。看起来很简单,但编译返回:

error: ‘prefixing’ was not declared in this scope

这是我的功能:

double prefixing( char * prefixit )
{
  if(strspn(prefixit, "m") == 1) return 1e-3;
  ...
  return 1.;
}

以下是我的称呼方式:

char * p = strtok (line,spliter);
double prefix = prefixing(p);

任何关于我做错事的建议都将不胜感激。

干杯,

1 个答案:

答案 0 :(得分:3)

可能prefixing在调用该方法的行之后定义。这是不允许的,你需要移动定义或向前声明它让编译器知道函数存在,例如:

double prefixing(char*); // forward declaration

...
double prefix = prefixing(p);
...

double prefixing(char* prefixit) { // definition

}