c - 如何从函数返回字符串数组

标签 c

char * myFunction () {

    char sub_str[10][20]; 
    return sub_str;

} 

void main () {

    char *str;
    str = myFunction();

}

错误:从不兼容的指针类型返回

谢谢

最佳答案

C 中的字符串数组可以与 char**char*[] 一起使用。但是,您不能像在函数中那样返回存储在堆栈中的值。如果要返回字符串数组,则必须动态保留它:

char** myFunction() {
    char ** sub_str = malloc(10 * sizeof(char*));
    for (int i =0 ; i < 10; ++i)
        sub_str[i] = malloc(20 * sizeof(char));
    /* Fill the sub_str strings */
    return sub_str;
}

然后main可以这样获取字符串数组:

char** str = myFunction();
printf("%s", str[0]); /* Prints the first string. */

编辑:由于我们分配了 sub_str,我们现在返回一个可以在 main 中访问的内存地址

关于c - 如何从函数返回字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4085372/

相关文章:

c++ - 如何使用更高级别的 C++ 代码编写句子逆向算法?

c++ - 什么是#pragma weak_import?

c - 验证 C 中 long long Int 行为异常

c - 在 C 中使用信号量处理套接字

创建独立于 bash 的进程

c - LC3/LC4 硬件系统中的有符号与无符号比较

c - inet_aton 转换 010.000.000.001 错误?

用日语打印出另一个 C 程序的 C 程序

c - 给定的字符串是否可转换为整数

c - 如何在 C 中的同一个 ADT 中使用多种数据类型?