将1D字符串复制到2D数组元素中

时间:2016-11-25 13:00:35

标签: c arrays function strcpy

我正在开发一个程序,其中用1D字符串覆盖2D数组的一部分是算法的必要条件。

应该进行覆盖的部分如下:

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

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

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

twoDtop是全局变量的变量。

每当程序到达此部分时,它就会崩溃。

2 个答案:

答案 0 :(得分: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';
    }
}

答案 1 :(得分:0)

您没有初始化arr

试试这个:

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

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

输出将是:

Hello

免责声明:这是非错误检查代码,仅用于演示目的。