在c中覆盖动态分配的数组中的字符

时间:2015-08-14 07:10:02

标签: c arrays

我试图覆盖2D数组中的字符。

这是我的代码

#include <stdio.h>
#include <stdlib.h>

int main(void){
    int i,j;

    char** arr=malloc(sizeof(char*)*4);
    for ( i = 0; i<4;i++){      
            arr[i] = malloc(sizeof(char)*4);            
        }
    for ( i = 0; i<4; i++){
        for ( j = 0; j<4; j++){         
            if((i==0&&j==0)||(i==0&&j==3)||(i==3&&j==0)||(i==3&&j==3)){         
                arr[i][j] = '=';    
                }
            else{
                arr[i][j] = ' ';
                }                               
            printf("%c", arr[i][j]);
            }   

        printf("\n");
        }       
    arr[1][1]= '+';
    printf("%c", arr);
    return 0;
}

首先打印带有空格键的2D数组,我试图覆盖&#39; +&#39;在arr

因此,首先,代码将返回2D数组。

假设0是空格键,因为我无法在stackoverflow中上传图像;(

=00=

0000

0000

=00=

之后我想在+中添加arr[1][1],因此2D数组将打印为

=00=

0+00

0000

=00=

1 个答案:

答案 0 :(得分:3)

问题在于打印部分,

public class MainActivity extends ActionBarActivity implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener {
  protected void onCreate(){
      private GestureDetectorCompat gestureDetector;
      this.gestureDetector = new GestureDetectorCompat(this,this);
      gestureDetector.setOnDoubleTapListener(this);

   }
}

您无法使用 printf("%c", arr); 打印整个 arr。你需要一个循环来逐个元素地执行它。

您可以重复使用您在开始时用于初始化元素的相同循环条件来打印出已修改的数组。

FWIW,%c不是由arr指示的正确类型,而是调用undefined behaviour