24小时热门版块排行榜    

查看: 361  |  回复: 1

风开始的地方

金虫 (小有名气)

[求助] [求助]关于fscanf的应用

Bit8 ReadParameter_GCODEPROCESS(FILE *fp, GCODEPROCESSTITEM *pElement)
{
        //"序号", "物理变量名称","数据类型","当前值","默认值","最大值","最小值"
       
        if( !fp || !pElement)
                return 0;
        Bit8 bRet;
       
        fscanf(fp, "%d,", &pElement->id); //参数编号
        fscanf(fp, "%s, ", pElement->sName); //参数变量名称
        fscanf(fp, "%d,", &pElement->bType); //数据类型
       
        if( pElement->bType == DTYPE_INTEGER)
                fscanf(fp, "%d,", &pElement->data_value.i); //当前值
        else //浮点型
                fscanf(fp, "%.4f,", &pElement->data_value.f); //当前值
       
        if( pElement->bType == DTYPE_INTEGER)
                fscanf(fp, "%d,", &pElement->def_value.i); //缺省值
        else //浮点型
                fscanf(fp, "%.4f,", &pElement->def_value.f); //缺省值
       
        if( pElement->bType == DTYPE_INTEGER)
                fscanf(fp, "%d,", &pElement->max_value.i); //最大值
        else //浮点型
                fscanf(fp, "%.4f,", &pElement->max_value.f); //最大值
       
        if( pElement->bType == DTYPE_INTEGER)
                fscanf(fp, "%d", &pElement->min_value.i); //最小值
        else //浮点型
                fscanf(fp, "%.4f", &pElement->min_value.f); //最小值
       
        fscanf(fp, "%c", &bRet); //换行符
       
        return 1;
}
调用的地方
ReadParameter_GCODEPROCESS(fp, &gCodeProcess.m_nSubsection);
ReadParameter_GCODEPROCESS(fp, &gCodeProcess.m_nAirValveClose);
ReadParameter_GCODEPROCESS(fp, &gCodeProcess.m_nOriginalPoint);
ReadParameter_GCODEPROCESS(fp, &gCodeProcess.m_nFstWorkStPoint);
ReadParameter_GCODEPROCESS(fp, &gCodeProcess.m_nPrincipalAxis)ReadParameter_GCODEPROCESS(fp, &gCodeProcess.m_nFirstPowerOn);

变量定义地方

#define HRG_PARANAME_STR_LEN   64

typedef struct tagGCODEPROCESS_ITEM                // 定义参数的编号、物理量名称、值;用于参数管理
{       
        uBit32 id;        //参数编号       

        ParamValue data_value;  //当前值
        ParamValue def_value;   //缺省值
        ParamValue max_value;        //最大值
        ParamValue min_value;        //最小值
       
        Bit8 sName[HRG_PARANAME_STR_LEN];// 参数物理量名称
        Bit8 bType;                                                 //数据类型

}GCODEPROCESSTITEM;

typedef struct tagGCODEPROCESS  // 加工工艺内容的参数值
{
        GCODEPROCESSTITEM m_nSubsection;                                GCODEPROCESSTITEM m_nAirValveClose;                        GCODEPROCESSTITEM m_nOriginalPoint;                        GCODEPROCESSTITEM m_nFstWorkStPoint;                        GCODEPROCESSTITEM m_nPrincipalAxis;                                GCODEPROCESSTITEM m_nFirstPowerOn;
               
}GCODEPROCESS;

GCODEPROCESS  gCodeProcess;


       
我用上面的函数读取数据,但是出现有些能读取,有些不能读取,
求大家帮助
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

stxiahu

木虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
建议全部用%s形式读取,然后用atof或者atoi转换成需要的数据类型试试。
2楼2013-03-16 20:40:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 风开始的地方 的主题更新
信息提示
请填处理意见