2015-06-20 28 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