我正在尝试使用另一个程序的接口,我必须使用以下方法:
void iterate_over_entries(Table* table, Func_ptr f, ... )
因此该函数被设计为在每个表条目上调用用户定义的函数f()。
函数指针定义为:
typedef size_t (*Func_ptr) (char* example, va_list args);
这意味着我必须编写一个类型为Func_ptr的函数来操作表的条目?
因此,举个例子,我想说什么 - 将长度低于给定值的所有字符串设置为“a”。那么,我必须把长度放到这个va_list中吗?
size_t my_method(char* example, va_list args) {
int length = va_arg(args, int);
if (strlen(example) < length) strncpy(example, "a\0", 2);
return 1;
}
所以如果我到目前为止所做的一切都是正确的,我只需要调用该函数,但我不知道如何做到这一点。让我说我希望命令行输入设置我允许的长度... < / p>
int main(int argc, char** argv){
Table* table; //this is set somehow..
int length = atoi(argv[1]);
size_t (*method)(char* example, va_list list);
method = &my_method;
}
那么我现在如何告诉程序使用my_method调用iterate_over_entries,其中输入的长度为......:S