2016-11-25 181 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'; 
    } 
}