我想读取一个文件,其中包含许多库函数的名称,这些函数包含在math.h中,如下所示:
sqrt
sin
cos
acos
asin使用文件,我将获得字符,但我希望将其放入一个结构中,该结构是指向此函数的指针。结构是这样的:
typedef struct {
    char l[N];
    double value;
    int MOD;
    double (*function)(double);
} st ;指向函数的指针是双精度(* function )(双精度)如何将要从文件中读取的字符转换为指向函数的指针?
发布于 2018-11-15 22:59:19
创建一个结构数组
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);发布于 2018-11-15 22:53:38
不要忘记包含数学标头(math.h)
从字符数组中的文件中读取函数名后,使用函数strcmp(const char *str1, const char *str2),如果为str1 == str2 // character by character,则返回0。然后,您可以像这样编写代码:
‘`double val;
if (strcmp(st->l,"sqrt") == 0)
{
stTemp->function = sqrt;
val = stTemp->function(value);//计算sqrt(value)
} else if (strcmp(st->l,"sin"))
{
stTemp->function = sin;
val = stTemp->function(value);//计算sin(value)
} //etc`
假设stTemp是指向st结构
的指针
https://stackoverflow.com/questions/53318221
复制相似问题