C - 函数指针的问题

标签 c function-pointers

我和我的搭档正在研究这个涉及函数指针的问题。目标是编写一个函数,将多个字符串处理函数应用于字符串。然后,该函数返回一个字符串数组,其中包含输入字符串上每个处理函数的结果。任何帮助,将不胜感激。谢谢!

char** string_central(char*(**)(char*), char* str);
char* char_double(char* str);
char* char_shift(char* str);
char* char_flip(char* str);

void main(int argc, char* argv[]) {
    char* (*functions[])(char *) = {char_double, char_shift, char_flip, NULL};
    char** result = string_central(functions, *argv);
    char* result_ptr = *result;
    while( result_ptr ){
        printf("Result: %s", result_ptr);
        result_ptr++;
    }

}
char** string_central(char*(*functions[])(char*), char* str){
    char** returnArray = (char **) malloc(100*sizeof(char));
    char** firstposition = returnArray;
    while(*functions != NULL) {
        *(returnArray)++ = (*(functions))(str);
    }
    *(returnArray)++ = "\0";
    return firstposition;
}

//Other Functions work properly

最佳答案

您需要在 string_central 中使用 malloc,如下所示 => (100 * sizeof(char*))。字符的大小通常为 1 个字节,任何指针的大小通常为 4 个字节。 (IIRC)

哦,还有,记得在使用内存后释放它们。

关于C - 函数指针的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35496259/

相关文章:

c++ - lambda 应该衰减到模板代码中的函数指针吗?

c++ - 转换 cpp 函数以在 r 中使用

c++ - 这是编写接受参数数量可变的函数指针的函数模板的正确方法吗?

c++ - 处理多字节字符的字符串

c - fork() 和 wait() 有两个子进程

c++ - printf 或任何输出函数实际上做了什么?

c - 递归中的 Big Theta

c - 为什么 C 代码中的引用调用不能交换 2 个值?

c++ - 如何从 C++ 中的函数返回复杂数据类型?

c - 尝试 printf large char[] 时出现段错误