C从字符到函数名

时间:2018-11-15 11:13:41

标签: c file struct

我想读取一个文件,其中包含很多math.h中包含的库函数名称,如下所示:

sqrt
sin
cos
acos
asin

使用文件我将获得字符,但是我想将其放入指向该函数的指针的结构中。结构是这样的:

typedef struct {
    char l[N];
    double value;
    int MOD;
    double (*function)(double);
} st ;

该函数的指针为double(* function)(double) 如何将要从文件中读取的字符转换为指向函数的指针?

2 个答案:

答案 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的指针