我想读取一个文件,其中包含很多math.h中包含的库函数名称,如下所示:
sqrt
sin
cos
acos
asin
使用文件我将获得字符,但是我想将其放入指向该函数的指针的结构中。结构是这样的:
typedef struct {
char l[N];
double value;
int MOD;
double (*function)(double);
} st ;
该函数的指针为double(* function)(double) 如何将要从文件中读取的字符转换为指向函数的指针?
答案 0 :(得分:1)
制作一个结构体数组
struct Match {
char name[20]; // enough
double (*fx)(double);
};
struct Match m[] = { /* sorted for bsearch */
{"acos", acos},
{"asin", asin},
{"cos", cos},
{"sin", sin},
// ...
{"sqrt", sqrt},
};
// etc
struct Match *mm = bsearch("asin", m, sizeof m / sizeof *m, cmpnames));
if (mm) newvalue = mm->fx(oldvalue);
答案 1 :(得分:0)
别忘了包含数学标头(math.h)
从字符数组中的文件中读取函数名称后,请使用函数strcmp(const char *str1, const char *str2)
,如果str1 == str2 // character by character
返回0。
然后,您可以编写如下代码:
`双值;
if(strcmp(st-> l,“ sqrt”)== 0)
{
stTemp-> function = sqrt;
val = stTemp-> function(value); //计算sqrt(value)
}否则(strcmp(st-> l,“ sin”))
{
stTemp-> function = sin;
val = stTemp-> function(value); //计算sin(value)
} // etc`
假设stTemp是指向st struct的指针