免费注册 查看新帖 |

Chinaunix

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

这段程序错在什么地方啊 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-21 16:16 |只看该作者 |倒序浏览
函数的功能是在配置文件配置某项配置的值

可是我写文件老是失败,而且只有最后一个参数值才能写进文件中,其他的参数值均无法写进文件



/****************************************************************/
/*                                                                */
/*                函数名?SetINIFile                                */
/*                功能:        在配置文件配置某项配置值                */
/*                参数:                                                */
/*                                文件名,配置项,该项值                */
/*                返回值:无返回值                                */
/****************************************************************/
void SetINIFile(
                char                *INIFile,
                char                *FIELDNAME,
                char                *value )
{
        FILE    *fp;
  int     i;
        char        *ucpp;
        char        uTmp[128];
        char        Tmpstr1[128];
        char        Tmpstr2[128];
        char        Tmpstr3[128];
        int        ii,jj;

  memset(uTmp,0,12;

        fp = fopen( INIFile,"r+" );
        if( fp == NULL )
                return;
        while( fgets( uTmp,128,fp ) != '\0' )
        {
                jj=0;
    memset(Tmpstr1,0,12;
    memset(Tmpstr2,0,12;
    memset(Tmpstr3,0,12;
                for( ii = 0;ii < strlen(uTmp);ii++ )
                {
                        if(uTmp[ii]!='\n'&&uTmp[ii]!='\t'&&uTmp[ii]!=' ')
                                Tmpstr1[jj++]=uTmp[ii];
                }
                Tmpstr1[jj] = '\0';
                if( Tmpstr1[0] == '#' ){
      memset(uTmp,0,12;
                        continue;
                }
                ucpp = (char*)memchr( Tmpstr1,'=',strlen(Tmpstr1) );
                if( ucpp == NULL ){
      memset(uTmp,0,12;
                        continue;
                }
                memcpy( Tmpstr2,Tmpstr1,ucpp-Tmpstr1 );
                Tmpstr2[ucpp-Tmpstr1] = '\0';
                if( strcmp( Tmpstr2,FIELDNAME ) == 0 )
                {
                        memcpy( ucpp+1,
                                value,
                                strlen(value));
                        ucpp[strlen(Tmpstr1)] = '\0';
      fputs( Tmpstr1 ,fp);
                        break;
                }
        }
        fclose( fp );
        return;
}

论坛徽章:
0
2 [报告]
发表于 2005-07-21 16:36 |只看该作者

这段程序错在什么地方啊

给你的建议,放弃这个换个看看, 网上有好几种现成的函数,我用过了,还不错

论坛徽章:
0
3 [报告]
发表于 2005-07-21 16:40 |只看该作者

这段程序错在什么地方啊

操作配置文件?
我想linux是否已经提供一个公共的配置文件操作函数阿
不然那么多程序
每个都写自己的配置函数??

论坛徽章:
0
4 [报告]
发表于 2005-07-21 16:42 |只看该作者

这段程序错在什么地方啊

我看了fgets( uTmp,128,fp )之后,指针向后移动了,指向文件的下一行,我要得到当前行指针的地址,怎么能够得到当前的指针呢?
还有,我写文件的时候,只能写最后一个参数的值,为什么啊

论坛徽章:
0
5 [报告]
发表于 2005-07-21 16:43 |只看该作者

这段程序错在什么地方啊

呵呵, 估计应该有, 不过还没哪个大牛提醒过我, 很多原码都是E文的, 很少仔细去看, 而且我看到的大多没有用的conf文件

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2005-07-21 16:45 |只看该作者

这段程序错在什么地方啊

>;>;我看了fgets( uTmp,128,fp )之后,指针向后移动了,指向文件的下一行,我要得到当前行指针的地址,怎么能够得到当前的指针呢?
还有,我写文件的时候,只能写最后一个参数的值,为什么啊

如果是这样的话.那么你就有必要每次移动指针之前 记录当前的指针的位置.然后在fseek回去. 不过我一般不这样做. 写个临时文件就好了.~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP