注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

逍遥子 曰:

得失失得 何必患得患失 舍得得舍 不妨不舍不得

 
 
 

日志

 
 

C文件操作函数fscanf和fprintf的使用[原]  

2013-02-23 11:51:48|  分类: C/C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


    

    使用fscanf和fprintf主要对一些有特定格式的数据进行文件读写较为方便,需要注意的是在读取的时候fscanf会遇到空格、回车就停止读取。


使用fprintf向文件中写入格式为<%d,%d,%d,%d,%ld>的内容,其实例代码如下:

bool Write_Msg(TMsg& msg)

{

    if(NULL == g_pFile)

    {

        printf("NULL == g_pFile  in func Write_Msg()\n");

        return false;

    }

    fprintf(g_pFile,"<%d,%d,%d,%d,%ld>\n", msg.iIndex, msg.iType, msg.iCode, msg.iValue, msg.Time);  

    fflush(g_pFile);  

    return true;

}


可以在文件中写入下面格式的内容:

<0,0,0,0,0>

<1,0,0,0,0>

<2,1,60,1,9783410>

<3,1,60,0,9783510>

<4,1,60,0,9783510>

<5,1,60,0,9783510>

<6,1,60,0,9783510>

<7,1,60,0,9783510>

<8,1,60,0,9783510>

<9,1,60,0,9783510>

<10,1,60,0,9783510>

使用fscanf对上述格式文件的读取也非常方面,可以很方便的将文件的内容提取到出来,其实例代码如下:

bool Read_Msg(TMsg& msg)

{

    if(NULL == g_pFile)

        return false;

    msg.iIndex = msg.iType = msg.iCode = msg.iValue = msg.Time = 0;

    fscanf(g_pFile,"<%d,%d,%d,%d,%ld>\n", &msg.iIndex, &msg.iType, &msg.iCode, &msg.iValue, &msg.Time);   

    return true;

}

注意:使用fscanf的时候不要忘记使用取地址符号&


使用fscanf对整个文件处理可以参考如下写法,根据返回的数据长度判断是否读取到文件结尾:

do{

        iRes = 0;

        iRes = fscanf(m_pFile,"<%d,%d,%d,%d,%ld>\n", &Msg.iIndex, &Msg.iType, &Msg.iCode,&Msg.iValue, &Msg.ulTime);  

        if(5 == iRes)

        {

            //printf("------------------<%d,%d,%d,%d,%ld>\n",  Msg.iIndex, Msg.iKeyType, Msg.iKeyCode, Msg.iKeyValue, Msg.ulTime);

            m_MsgList.push_back(Msg); 

        }

}while(iRes > 0);

另外,其中打开与关闭文件的c代码类似如下:


打开文件代码(写打开模式为w+,读取可用rt):

    if(NULL == g_pFile)

    {

        char fileName[64] = {0};

        sprintf(fileName, "%s%s", TEST_RESULT_FILEPATH,FILENAME);

        if((g_pFile = fopen(fileName,"w+")) == NULL)

        {

            printf("fail: fopen \n");

            return false;

        }                

    }


其中:TEST_RESULT_FILEPATH,FILENAME为自定义的两个文件路径和文件名字的宏


关闭文件:

   if(NULL != g_pFile)

    {

        fflush(g_pFile); 

        fclose(g_pFile);

        g_pFile = NULL;               

    }


  评论这张
 
阅读(816)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018