求教一个问题,在C里怎么把替换出来的字符串执行了,比如我有个字符串 stre 内容是 "a=strpos;"
我想让这个字符串执行了,等于我执行了 a=strpos;这条语句,能实现吗?麻烦各位拜托了!!
上边的是原话,可能没说清楚,我再说一次吧,呵呵
我的意思是一个文本,里边每行都写着一些配置,比如
begintime=300
begindate=2
......
我现在的做法是用循环取,如果循环变量等于1,那么我就把我定义的begintime变成这个配置文件里的对应数,同理,这么下去,可是这样配置文件越大,写的也越大,我想我在配置文件里已经写清楚begintime=300了,可不可以读出文本以后,把这个“begintime=300”字符串当做我写在程序里的一条语句,我就不用再用循环变量判断了只要一条或者几条语句,把文本里的字符串取出来,然后执行就得,这个意思,哪位能帮帮我,下边说的宏定义不行,因为当你define时已经把后边写死了,我是要循环读出的,所以宏定义我不会弄,有会的帮帮忙,谢谢啦!
kyako 2006-3-7
也许我表达的不好,是这个意思,a是我之前定义的变量,现在我的方法是设置循环变量,事先规定好,如果变量=1那么就把取出来的字符串“a=str"解析,只要后边的str,然后给a,执行的语句是
strcpy(a,"str");
现在我发现这样的变量太多了,我要设置好多case,所以我想有没有方法,直接把a=str执行了!?
就是我在配置文件里第一行直接写strcpy(a,"str");然后我循环取出这个字符串是就自动执行了,有这个接口吗?
我把我原来的程序写上,帮忙看看吧,也许有帮助理解我的需求!(省略了定义部分^-^)
//配置文件是这样写的
a=str1
b=str2
c=str3
这样的配置文件搭配下边的程序,能实现每行读出来,然后把得到的值给变量,但是程序会因为配置文件的行数而越边越大,那么我想如果配置文件变成下边的样子,然后直接替换出来是不是就很简单了
我想最终的配置文件
strcpy(a,"str1");
strcpy(b,"str2");
当然,需要一个方法,把这个字符串执行了,就卡到这不会了,下边是和原始配置文件搭配的程序段
程序段:
fp=fopen(conf,"r");
i=1;
while(fgets(flag,200,fp))
{
if(i ==1)//说明是第1行
{
p1 =(char *)strchr(flag,'=');
p1++;
strcpy(a,p1);
}
else if(i == 2)//说明是第2行
{
p1 =(char *)strchr(flag,'=');
p1++;
strcpy(b,p1);
..........
}
i++;
}
[此贴子已经被作者于2006-3-7 16:42:35编辑过]