0

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

但似乎我无法完成这项任务array2 = function();,但我认为使用char *forarray 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;
}
4

3 回答 3

2

您应该使用char**char* array[]作为字符串数组。

在你的function()array是数组的第一个地址。char*原型应该是char **function()

而且我不认为数组的名称可以更改。说int a[3], b[3];a是一个常数,所以a = b是不允许的。

小心拼写错误,例如funtion() function().

于 2013-09-29T06:28:54.130 回答
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;                                                                
}
于 2013-09-29T06:54:57.507 回答
0

有很多方法可以解决您的问题。好像和这些问题差不多 [general arrays][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");
}
于 2013-09-29T06:36:45.203 回答