如何在函数中返回字符串数组?

时间:2013-09-29 05:57:53

标签: c arrays windows

我想在函数中创建一个字符串的静态数组,然后该函数的返回值将分配给另一个字符串数组。

但似乎我无法执行此作业array2 = function();,但我认为char *使用array of string是否可以? 我的代码有什么问题? 感谢

这是我的代码

#include <stdio.h>
#include <stdlib.h>

char * function();
int main(){

    char * array2[100] = {};
    array2 = function();

    // print this array of string
    int i;
    for(i=0;i<strlen(array2);i++){
        printf("%s\n",array2[i]);
    }
    system("pause");
}

char * function(){
    static char * array[100] = {};
    array[0] = "100";
    array[1] = "200";
    return array;
}

3 个答案:

答案 0 :(得分:2)

您应该使用char**char* array[]来表示字符串数组。

function()中,arraychar*数组的第一个地址。原型应为char **function()

我不认为数组的名称可以更改。int a[3], b[3]; a是常量,因此不允许a = b

请注意funtion() function()等拼写错误。

答案 1 :(得分:1)

我会做这样的事情:

#include <stdio.h>                                                           
#include <stdlib.h>                                                          

static char **function(void)                                                 
{                                                                            
    char **array = malloc(2 * sizeof(*array));                               
    array[0] = "100";                                                        
    array[1] = "200";                                                        
    return array;                                                            
}                                                                            

int main(int argc, char *argv[])                                             
{                                                                            
    char **array2;                                                           
    array2 = function();                                                     

    /* print this array of string */                                         
    int i;                                                                   
    for (i = 0; i < 2; i++)                                                  
        printf("%s\n",array2[i]);                                            

    free(array2);                                                            

    return 0;                                                                
}

答案 2 :(得分:0)

有很多方法可以解决您的问题。它似乎与这些问题类似[一般数组] [1] [String arrays] [2]

或者你可以传递数组,让它像这样工作

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include "string.h"

using namespace std;

void function(char *input[100]){
    input[0] = "100";
    input[1] = "200";
}
int main(){

    char * array2[100];
    function(array2);

    // print this array of string (int)strlen(*array2)
    int i;
    for(i=0;i<(int)strlen(*array2) - 1;i++){
        printf("%s\n",array2[i]);
    }
    system("pause");
}