2015-06-20 32 views
1

我一直在使用的strcpy这看起来如何用c

char optarg ={"30","31"} 

如何通过在数组中OPTARG所以它会通过为dest[3][3]={"30","31"}

+2

该代码看起来不正确。请修改您的问题以包含真实代码。 – o11c

+0

请注意,_an指针阵列不是2D阵列_。另外,你的意思可能是'cont char * optarg [] = {“30”,“31”};'。 – Lundin

回答

0

你的单串制成一个字符串传递字符串的二维数组不应该是char类型。

一个字符串基本上相当于一个char*类型,所以要创建一个字符串数组,请将您的变量设为char**。您的代码应如下所示:

int main() 
{ 
    //code to generate the strings here... 

    char** optarg = //array of strings 

    foo(optarg); 
} 

void foo(char** dest) 
{ 
    //do stuff with dest 
} 
+0

如果我们像静态初始化数组一样,char optarg [3] [3] = {“30”,“31”,“32”}或者char optartar ** = {“30”,“31”,“32”}那么没有问题,它工作正常,但创建数组时,如下面的代码片段所示,我们不能通过相同的:optarg,因为它需要索引来访问单个字符串。 char optarg [3] [3] = {0,}; strcpy(optarg [0],“31”); strcpy(optarg [1],“32”); – pri

+0

@pri你可能想要一个指针数组,或者你想要一个2D数组。他们不一样,他们不兼容。请澄清你的问题。 – Lundin

+0

我的意思是... main(){char send [3] [3] = {“30”,“31”,“32”};状态= foo(发送);} foo((char ** res)){} EXEC SQL DECLARE abcd CURSOR FOR SELECT托运FROM事务WHERE order_type IN(:res);这只给出order_type = 30和skip 31,32的记录 – pri