>>32
なんか読みにくかったから、手を入れてみた。
  int m = 3;
  int n = 4;
  int **str;
  int i, j;

  if ((str = (int**)malloc(sizeof(int*) * m)) == NULL) {
    printf("メモリー確保の失敗:1");
    exit(1);
  }
  for (i = 0; i < m; i++) {
    if((str[i] = (int*)malloc(sizeof(int) * n)) == NULL) {
      printf("メモリー確保の失敗:2");
      exit(1);
    }
  }

  for(i = 0; i < m; i++){
    putchar('\n');
    for(j = 0; j < n; j++){
      str[i][j] = 'A' + i * n + j;
      printf("%c", str[i][j]);
    }
  }
  putchar('\n');
  for(i = 0; i < m; i++){
    putchar('\n');
    for(j = 0; j < n; j++) {
      printf("%3d",str[i][j]);
    }
  }