我正在开发一个程序,其中用1D字符串覆盖2D数组的一部分是算法的必要条件。
应该进行覆盖的部分如下:
char twoD[MAX][MAX];
int top=2;
int main(){
char arr[MAX];
func(arr);
}
void func(char newArr[]){
strcpy(twoD[++top], newArr);
}
twoD
和top
是全局变量的变量。
每当程序到达此部分时,它就会崩溃。
答案 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
免责声明:这是非错误检查代码,仅用于演示目的。