写程序实现读取配置文件,程序调用实现接口,并返回指定key的value值

配置文件格式:key每行开头顶格一个空格接valuevalue之间用分号隔开一行放不下时,第二行以空格开始接着写,直到下一个key值出现keyvalue0;value1;... 配置文件格式: key每行开头顶格 一个空格接value value之间用分号隔开一行放不下时,第二行以空格开始接着写,直到下一个key值出现
key value0;value1;.....
valuen;.......
# 井号是注释 忽略

配置文件格式说明,key值程序调用输入值,value值为返回值
一个key值有一或多个value值,一行放不下时,第二行以空白开始接着写,直到下一个key值出现,上次value值读取完成!

进一步要求:
对value值进行解析,以判断某些输入value值是否在配置文件的key对应的value值中,比如学生编号key,对应多个学生编号,判断某一个学生编号是否在其中

请帮忙提供需要用什么函数 思路如何界定key和value 我把分都给你
展开
 我来答
a348876412
2012-05-09 · TA获得超过136个赞
知道小有建树答主
回答量:292
采纳率:0%
帮助的人:236万
展开全部
你的配置文件是要你来写的么?具体格式是形如:
student 2001;2002;2003
teacher 1001;1002;1003
这样的?
如果是以上格式的,可以通过读取配置文件,然后以数组形式处理,结果数组为key=>value的形式。
下面的代码使用于配置文件每行key的结束以teacher 1001;1002;1003没有分号结束的,如果有分号就表示这个key还没结束。
//读取文件就省了..
$config='
student 2001;2002;2003;
2004;
teacher 1001;1002;1003
';
$temp=array();
$newarr=array();
$arr=explode("\n",$config);
$count=count($arr);
for($i=0;$i<$count;$i++){
if(strlen($arr[$i])!=1){ //跳过长度小于等于1的行
if(strstr($arr[$i],' ')&&preg_match('/;|;$/i',$arr[$i])){ //以;结尾表示这个key有两行
$newstr=str_replace("\n","",$arr[$i].$arr[$i+1]); //将下一行的字符串连接到这一行同时去除换行(不知道为啥打印结果的时候还是有换行~)
$i++; //跳过下一行没有key的
}else{
$newstr=$arr[$i];
}
$temp=explode(' ',$newstr);
if(is_array($temp)){
$newarr[$temp['0']]=$temp['1'];
}

}

}
print_r($newarr); //newarr格式为key=>value
追问
好多$   能不能详细点 多点注释  我很菜..
都没有初始化啊 忘了说了 用C语言 别PHP
追答
C语言就帮不了你了~
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式