passing function with variable parameter as void pointer, and calling it

c, pointers

Solution

You can simply create a function (`func2`) that takes a function pointer to your desired function that you want called and another paramter that takes a pointer to your string. Then in `func2` call the passed in function pointer with the `str` argument.

#include <stdio.h>

void func1(const char *str)
{
    puts(str);
}

void func2(void (*fp)(const char *), const char *str)
{
    fp(str);
}

int main(void)
{
    const char *str = "Hello world.";

    func2(func1, str);

    return 0;
}

Problem

I have a function which I want to pass through various functions ``` int func1(char *ptr) { printf("%s",ptr); return 0; } ``` and other function in which I want to call the func1 ``` int func2(void *i) { //call i //here i point to function func1 //and do something with return value of i } ``` So, how should I call it in main()? ``` int main() { void *d; //SOMETHING wrong in next four line d=&func1("abcd"); func2(d); d=&func1("xyz"); func2(d); return 0; } ```

Original source

Related problems