免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: maico
打印 上一主题 下一主题

有关在UNIX下用C写一个读配置文件的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-02-24 12:50 |只看该作者

有关在UNIX下用C写一个读配置文件的问题


  1. // -------------------------------------------------------------------------------------------
  2. //              从一个串 读入一个单词(用引号括起来的或是只由字母数字组成的串),
  3. //              如果没有读入则返回NULL,如果已读入则返回下一个分析的位置,
  4. //                现在使用的只是读配置文件
  5. // -------------------------------------------------------------------------------------------
  6. const char *GetAWord (const char *pool, char *Word, int StrLen)
  7. {
  8.         int poolptr = 0, wordptr = 0;
  9.         char c, *dest;
  10.         if (!pool)
  11.                 return NULL;
  12.         while (isspace (pool[poolptr]))
  13.                 poolptr++;
  14.         c = pool[poolptr];
  15.         if (!c)
  16.                 return NULL;
  17.         if (c == '\'' || c == '"')
  18.     {
  19.                 dest = strchr (pool + poolptr + 1, c);
  20.                 if (!dest)
  21.                         return NULL;
  22.                 wordptr = dest - (pool + poolptr);
  23.                 if (wordptr >; StrLen - 1)
  24.                         return NULL;
  25.                 strncpy (Word, pool + poolptr + 1, wordptr - 1);
  26.                 Word[wordptr - 1] = 0;
  27.                 return dest + 1;
  28.     }
  29.         while (isalnum (pool[poolptr]))
  30.     {
  31.                 if (wordptr >; StrLen - 1)
  32.                         return NULL;
  33.                 Word[wordptr++] = pool[poolptr++];
  34.     }
  35.         Word[wordptr] = 0;
  36.         if (wordptr)
  37.                 return pool + poolptr;
  38.         return NULL;
  39. }


  40. 以上是函数说明
  41. 以前写得不是很好

复制代码

论坛徽章:
0
12 [报告]
发表于 2003-02-24 12:51 |只看该作者

有关在UNIX下用C写一个读配置文件的问题

自己改一下吧

使用例子

  1.                 ifs.getline (strbuf, 499);
  2.                 if (ifs.eof ())
  3.                         break;
  4.                 equalptr = strchr (strbuf, '=');
  5.                 if (!equalptr)
  6.                         continue;
  7.                
  8.                 poolptr = GetAWord (strbuf, Name, 20);
  9.                 if(!poolptr)
  10.                         continue;
  11.                 while (isspace (poolptr[0]))
  12.                         poolptr++;
  13.                 if (poolptr != equalptr)
  14.                         continue;
  15.                 if (!GetAWord (equalptr + 1, Value, 300))
  16.                         continue;
  17.                 if (!stricmp (Name, "USER"))
  18.                         TelnetPort = atoi (Value);

复制代码

论坛徽章:
0
13 [报告]
发表于 2003-02-24 13:07 |只看该作者

有关在UNIX下用C写一个读配置文件的问题

[quote]原帖由 "hzhrh"]ftok是生成键值的,别听他胡说。[/quote 发表:

是啊。这个函数的功能可和楼主的要求不太符合吆。

论坛徽章:
0
14 [报告]
发表于 2003-02-24 13:55 |只看该作者

有关在UNIX下用C写一个读配置文件的问题

原帖由 "幸福的秋天" 发表:
sco下有一个现成的ftok(filename,key)
直接从文件中获得key指定的参数,多简单。


呵呵!这为兄弟去MAN FTOK 是做什么用的吧!
你是不是想说STRTOK 啊 :)
ftok是网络编程里面生成键值的

论坛徽章:
0
15 [报告]
发表于 2003-02-24 14:47 |只看该作者

有关在UNIX下用C写一个读配置文件的问题

ftok 用于在System V IPC函数中从一个文件生成键值

用于进程间通信

论坛徽章:
0
16 [报告]
发表于 2003-02-24 17:45 |只看该作者

有关在UNIX下用C写一个读配置文件的问题

以前我在这里也问过读写配置文件的代码,大家都说让我自己写。
觉得累,在网上找了半天,找到一个,但不好用。
又用了半天时间自己写了一个,还是自己写的东西好。呵呵

论坛徽章:
0
17 [报告]
发表于 2003-02-24 18:23 |只看该作者

有关在UNIX下用C写一个读配置文件的问题

自己写好

因为不同的人代码有不同代码风格

不会和你的风格一样

另外有的代码可能存在问题

论坛徽章:
0
18 [报告]
发表于 2003-02-28 23:04 |只看该作者

有关在UNIX下用C写一个读配置文件的问题

谢谢各位狭义之士!我最终还是写出了自己的Code,基本上实现了功能。
我一气之下写了好几个版本,因为是初学嘛,大家说对吧!

论坛徽章:
0
19 [报告]
发表于 2003-03-01 13:57 |只看该作者

有关在UNIX下用C写一个读配置文件的问题

很不错啊

就当是练习
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP