2016-11-25 182 views
-1

我正在研究一個程序,其中用一維字符串覆蓋二維數組的一部分是該算法的必要條件。將一維字符串複製到二維數組元素

是應該做覆蓋部分如下:

char twoD[MAX][MAX]; 
int top=2; 

int main(){ 
    char arr[MAX]; 
    func(arr); 
} 

void func(char newArr[]){ 
    strcpy(twoD[++top], newArr); 
} 

twoDtop是變量是全局變量。

只要程序到達這個部分,它就會崩潰。

+0

什麼是錯誤?什麼是預期的輸入/輸出? – Carcigenicate

+2

什麼是MAX?請出示[MCVE]。 –

+0

錯誤是:「程序已停止工作」。一些預期的輸入:(5 + 3)*(7-3)。 –

回答

0

你沒有初始化arr

試試這個:

int main() { 
    char arr[MAX] = "HELLO"; 
    func(arr); 

    printf("%s\n", twoD[3]); 
} 

輸出將是:

Hello 

聲明:本非錯誤校驗碼這就是僅提供用於演示目的。

2

照顧數組邊界。

char twoD[MAX][MAX]; 
int top=2; 

int main(){ 
    char arr[MAX] = ""; //Initialize the string. 
    func(arr); 
} 

void func(char newArr[]){ 
    if(++top < MAX) //Check if top has reached MAX. 
    { 
     strncpy(twoD[top], newArr, MAX-2); //At max copy string of length (MAX-2)+'\0'. 
     twoD[top][MAX-1] = '\0'; 
    } 
}